Sequence Waves [OmegaTools]the sequence waves indicator, developed by omegatools, is a multi-functional tool designed to detect trends, sequences, and potential reversal signals based on price movements and volume. this indicator has two main modes, "trend" and "sequence," which determine how the indicator calculates directional changes. additional enhancements in this version include reversal signals, allowing users to identify potential long and short opportunities with specific entry cues.
input parameters
mode (mode): chooses the calculation basis for directional movement.
- "trend": uses a midline calculated from the highest high and lowest low over the "trend mode length" period to assess if the price is in an upward or downward trend.
- "sequence": compares the current price to the closing price of the previous "sequence mode length" period to detect shifts in direction.
counter mode (modec): sets whether the counter increments by a fixed amount (1 or -1) or the volume of the bar, impacting the indicator’s sensitivity.
- "fixed": increments or decrements the counter by 1.
- "volume": increments or decrements based on the period’s volume, making the indicator more responsive to high-volume periods.
percentile length (lntp): defines the lookback period for calculating overbought and oversold thresholds using a percentile method. shorter lengths make ob/os levels more reactive.
sensitivity (sens): controls the percentile-based ob/os thresholds, ranging from 10 to 100. higher values narrow ob/os zones, while lower values widen them, impacting signal frequency.
trend mode length (lnt1): sets the period length for midline calculation in trend mode, defaulting to 21. longer periods smooth the midline for detecting major trends.
sequence mode length (lnt2): sets the lookback period in sequence mode, with a default of 4. shorter lengths capture more frequent directional changes, while longer lengths smooth signals.
visual colors:
- up color (upc): sets the color for upward movements.
- down color (dnc): sets the color for downward movements.
calculation logic
midline calculation: in trend mode, a midline is derived from the average of the highest high and lowest low over the "trend mode length" period, acting as a reference to detect upward or downward movements.
counter calculation:
- in trend mode, if the close price is above the midline, the counter increases (or volume if volume mode is selected). it decreases when the price is below.
- in sequence mode, the counter increases if the close is above the closing price from "sequence mode length" periods ago and decreases if below.
the counter resets to zero on direction changes, creating clear directional transitions.
overbought/oversold percentiles: separate arrays track the counter’s values each time the direction changes, creating historical up and down values. ob and os thresholds are dynamically determined based on these arrays, with sizes limited by the percentile length and sensitivity inputs.
reversal signals: two new variables, "long" and "short," detect potential reversal points when the counter crosses specific thresholds:
- long: a long signal is generated when the counter switches to positive and exceeds the down percentile.
- short: a short signal is triggered when the counter switches to negative and exceeds the up percentile.
visual and display elements
counter plot: plots the counter value on the chart with color-coded columns, making it easy to spot directional momentum.
up and down percentiles: displays overbought (up percentile) and oversold (down percentile) thresholds to identify potential reversal zones.
regime background: the background color changes based on market regime:
- bullish (up percentile > down percentile): greenish background.
- bearish (down percentile > up percentile): reddish background.
- neutral (both percentiles equal): grayish background.
reversal signals: plotted as small triangles on the chart for visual confirmation of potential long (triangle up) and short (triangle down) reversal signals.
obs background: changes color when the counter exceeds ob or os thresholds, creating a visual cue for extreme market conditions:
- overbought: background changes to a faint down color.
- oversold: background changes to a faint up color.
status table: displayed on the right side of the chart, providing real-time status information:
- status: shows "overbought," "oversold," "long," "short," or "none" based on the current counter position.
- regime: indicates whether the market is in a "bullish," "bearish," or "neutral" state based on the percentile comparison.
- percentile up/down: displays the current up and down percentiles for quick reference.
how to use the indicator
trend following: in trend mode, use the midline-based counter to gauge if the market is in an uptrend (positive counter) or downtrend (negative counter).
reversal detection: the ob/os thresholds assist in identifying potential reversal points. when the counter exceeds the up percentile, it may indicate an overbought state, suggesting a bearish reversal. similarly, dropping below the down percentile may indicate an oversold state, suggesting a bullish reversal.
entry signals: use the long and short reversal signals for potential entry points, particularly in trending or range-bound markets. these signals are indicated by up and down triangles.
sequence trading: in sequence mode, the indicator tracks shorter-term directional shifts, making it suitable for detecting smaller momentum patterns based on recent price comparisons.
volume sensitivity: selecting volume mode enhances sensitivity to high-volume moves, allowing it to detect stronger market activity in both trend and sequence modes.
the sequence waves indicator is suited to both short-term and long-term traders. it allows for detailed trend analysis, reversal detection, and dynamic ob/os signals. the inclusion of visual reversal cues makes it a flexible tool adaptable to a variety of trading strategies.
在腳本中搜尋"Up down"
Uptrick: Zero Lag HMA Trend Suite1. Name and Purpose
Uptrick: Zero Lag HMA Trend Suite is a Pine Version 6 script that builds upon the Hull Moving Average (HMA) to offer an advanced trend analysis tool. Its purpose is to help traders identify trend direction, potential reversals, and overall market momentum with reduced lag compared to traditional moving averages. By combining the HMA with Average True Range (ATR) thresholds, slope-dependent coloring, Volume Weighted Average Price (VWAP) ribbons, and optional reversal signals, the script aims to give a detailed view of price activity in various market environments.
2. Overview
This script begins with the calculation of a Hull Moving Average, a method that blends Weighted Moving Averages in a way designed to cut down on lag while still smoothing out price fluctuations. Next, several enhancements are applied. The script compares current HMA values to previous ones for slope-based coloring, which highlights uptrends and downtrends at a glance. It also plots buy and sell signals when price moves beyond or below thresholds determined by the ATR and the user’s chosen signal multiplier. An optional VWAP ribbon can be shown to confirm bullish or bearish conditions relative to a volume-weighted benchmark. Additionally, the script can plot reversal signals (labeled with B) at points where price crosses back toward the HMA from above or below. Taken together, these elements allow traders to visualize both the short-term momentum and the broader context of how price interacts with volatility and overall market direction.
3. Why These Indicators Have Been Linked Together
The reason the Hull Moving Average, the Average True Range, and the VWAP have been integrated into one script is to tackle multiple facets of market analysis in a single tool. The Zero Lag Hull Moving Average provides a responsive trend line, the ATR offers a measure of volatility that helps distinguish significant price shifts from typical fluctuations, and the VWAP acts as a reference for fair value based on traded volume. By layering all three, the script helps traders avoid the need to juggle multiple separate indicators and offers a holistic perspective. The slope-based coloring focuses on trend direction, the ATR-based thresholds refine possible buy and sell zones, and the VWAP ribbons provide insight into how price stands relative to an important volume-weighted level. The inclusion of up and down signals and reversal B labels further refines entries and exits.
4. Why Use Uptrick: Zero Lag HMA Trend Suite
The Hull Moving Average is already known for reacting more quickly to price changes compared to other moving averages while retaining a degree of smoothness. This suite enhances the basic HMA by showing colored gradients that make it easy to spot trend direction changes, highlighting potential entry or exit points based on volatility-driven thresholds, and optionally layering a volume-based measure of bullish or bearish market sentiment. By relying on a zero lag approach and additional data points, the script caters to those wanting a more responsive method of identifying shifts in market dynamics. The added reversal signals and up or down alerts give traders extra confirmation for potential turning points.
5. How This Extension Improves on the Basic HMA
This extension not only plots the Hull Moving Average but also includes data-driven alerts and visual cues that traditional HMA lines do not provide. First, it offers multi-layered slope coloring, making up or down trends quickly apparent. Second, it uses ATR-based thresholds to pinpoint moments when price may be extending beyond normal volatility, thus generating buy or sell signals. Third, the script introduces an optional VWAP ribbon to indicate whether the market is trading above or below this pivotal volume-weighted benchmark, adding a further confirmation step for bullish or bearish conditions. Finally, it incorporates optional reversal signals labeled with B, indicating points where price might swing back toward the main HMA line.
6. Core Components
The script can be broken down into several primary functions and features.
a. Zero Lag HMA Calculation
Uses two Weighted Moving Averages (half-length and full-length) combined through a smoothing step based on the square root of the chosen length. This approach is designed to reduce lag significantly compared to other moving averages.
b. Slope Detection
Compares current and prior HMA values to determine if the trend is up or down. The slope-based coloring changes between turquoise shades for upward movement and magenta shades for downward movement, making trend direction immediately visible.
c. ATR-Based Thresholding for Up and Down Signals
The script calculates an Average True Range over a user-defined period, then multiplies it by a signal factor to form two bands around the HMA. When price crosses below the lower band, an up (buy) signal appears; when it crosses above the upper band, a down (sell) signal is shown.
d. Reversal Signals (B Labels)
Tracks when price transitions back toward the main HMA from an extreme zone. When enabled, these reversal points are labeled with a B and can help traders see potential turning points or mean-reversion setups.
e. VWAP Bands
An optional Volume Weighted Average Price ribbon that plots above or below the HMA, indicating bullish or bearish conditions relative to a volume-weighted price benchmark. This can also act as a kind of support/ resistance.
7. User Inputs
a. HMA Length
Controls how quickly the moving average responds to price changes. Shorter lengths react faster but can lead to more frequent signals, whereas longer lengths produce smoother lines.
b. Source
Specifies the price input, such as close or an alternative source, for the calculation. This can help align the HMA with specific trading strategies.
c. ATR Length and Signal Multiplier
Defines how the script calculates average volatility and sets thresholds for buy or sell alerts. Adjusting these values can help filter out noise or highlight more aggressive signals.
d. Slope Index
Determines how many bars to look back for detecting slope direction, influencing how sensitive the slope coloring is to small fluctuations.
e. Show Buy and Sell Signals, Reversal Signals, and VWAP
Lets users toggle the display of these features. Turning off certain elements can reduce chart clutter if traders prefer a simpler layout.
8. Calculation Process
The script’s calculation follows a step-by-step approach. It first computes two Weighted Moving Averages of the selected price source, one over half the specified length and one over the full length. It then combines these using 2*wma1 minus wma2 to reduce lag, followed by applying another weighted average using the square root of the length. Simultaneously, it computes the ATR for a user-defined period. By multiplying ATR by the signal multiplier, it establishes upper and lower bands around the HMA, where crossovers generate buy (up) or sell (down) signals. The script can also plot reversal signals (B labels) when price crosses back from these bands in the opposite direction. For the optional VWAP feature, Pine Script’s ta.vwap function is used, and differences between the HMA and VWAP levels determine the color and opacity of the ribbon.
9. Signal Generation and Filtering
The ATR-based thresholds reduce the influence of small, inconsequential price swings. When price falls below the lower band, the script issues an up (buy) signal. If price breaks above the upper band, a down (sell) signal appears. These signals are visible through labels placed near the bars. Reversal signals, labeled with B, can be turned on to help detect when price retraces from an extended area back toward the main HMA line. Traders can disable or enable these signals to match their preferred level of chart detail or risk tolerance.
10. Visualization on the Chart
The Zero HMA Lag Trend Suite aims for visual clarity. The HMA line is plotted multiple times with increasing transparency to create a gradient effect. Turquoise gradients indicate upward slopes, and magenta gradients signify downward slopes. Bar coloring can be configured to align with the slope direction, providing quick insight into current momentum. When enabled, buy or sell labels are placed under or above the bars as price crosses the ATR-defined boundaries. If the reversal option is active, B labels appear around areas where price changes direction. The optional VWAP ribbons form background bands, using distinct coloration to signal whether price is above or below the volume-weighted metric.
11. Market Adaptability
Because the script’s parameters (HMA length, ATR length, signal multiplier, and slope index) are user-configurable, it can adapt to a wide range of markets and timeframes. Intraday traders may prefer a shorter HMA length for quick signals, while swing or position traders might use a longer HMA length to filter out short-lived price changes. The source setting can also be adjusted, allowing for specialized data inputs beyond just close or open values.
12. Risk Management Considerations
The script’s signals and labels are based on past price data and volatility readings, and they do not guarantee profitable outcomes. Sharp market reversals or unforeseen fundamental events can produce false signals. Traders should combine this tool with broader risk management strategies, including stop-loss placement, position sizing, and independent market analyses. The Zero HMA Lag Trend Suite can help highlight potential opportunities, but it should not be relied upon as the sole basis for trade decisions.
13. Combining with Other Tools
Many traders choose to verify signals from the Zero HMA Lag Trend Suite using popular indicators like the Relative Strength Index (RSI), Moving Average Convergence Divergence (MACD), or even simple volume-based metrics to confirm whether a price movement has sufficient momentum. Conventional techniques such as support and resistance levels, chart patterns, or candlestick analysis can also supplement signals generated by the script’s up, down, or reversal B labels.
14. Parameter Customization and Examples
a. Short-Term Day Trading
Using a shorter HMA length (for instance, 9 or 14) and a slightly higher ATR multiplier might provide timely buy and sell signals, though it may also produce more whipsaws in choppy markets.
b. Swing or Position Trading
Selecting a longer HMA length (such as 50 or 100) with a moderate ATR multiplier can help users track more significant and sustained market moves, potentially reducing the effect of minor fluctuations.
c. Multiple Timeframe Blends
Some traders load two versions of the indicator on the same chart, one for short-term signals (with frequent B label reversals) and another for the broader trend direction, aligning entry and exit decisions with the bigger picture.
15. Realistic Expectations
Even though the Hull Moving Average helps minimize lag and the script incorporates volatility-based filters and optional VWAP overlays, it cannot predict future market behavior with complete accuracy. Periods of low liquidity or sudden market shocks can still lead to signals that do not reflect longer-term trends. Frequent parameter review and manual confirmation are advised before executing trades based solely on the script’s outputs.
16. Theoretical Background
The Hull Moving Average formula aims to balance smoothness with reactivity, accomplished by combining Weighted Moving Averages at varying lengths. By subtracting a slower average from a faster one and then applying another smoothing step with the square root of the original length, the HMA is designed to respond more promptly to price changes than typical exponential or simple moving averages. The ATR component, introduced by J. Welles Wilder, calculates the average range of price movement over a user-defined period, allowing the script to assess volatility and adapt signals accordingly. VWAP provides a volume-weighted benchmark that many institutional traders track to gauge fair intraday value.
17. Originality and Uniqueness
Although multiple HMA-based indicators can be found, Uptrick: Zero Lag HMA Trend Suite sets itself apart by merging slope-based coloring, ATR thresholds, VWAP ribbons, up or down labels, and optional reversal signals all in one cohesive platform. This synergy aims to reduce chart clutter while still giving traders a comprehensive look at trend direction, volatility, and volume-based sentiment.
18. Summary
Uptrick: Zero Lag HMA Trend Suite is a specialized trading script designed to highlight potential market trends and reversals with minimal delay. It leverages the Hull Moving Average for an adaptive yet smooth price line, pairs ATR-based thresholds for detecting possible breakouts or dips, and provides VWAP-based ribbons for added volume-weighted context. Traders can further refine their entries and exits by enabling up or down signals and reversal labels (B) where price may revert toward the HMA. Suitable for a wide range of timeframes and instrument types, the script encourages a disciplined approach to trade management and risk control.
19. Disclaimer
This script is provided for informational and educational purposes only. Trading and investing involve significant financial risk, and no indicator can guarantee success under all conditions. Users should practice robust risk management, including the placement of stop losses and position sizing, and should confirm signals with additional analysis tools. The developer of this script assumes no liability for any trading decisions or outcomes resulting from its use.
Top-Down Trend and Key Levels with Swing Points//by antaryaami0
Overview
The “Top-Down Trend and Key Levels with Swing Points” indicator is a comprehensive tool designed to enhance your technical analysis by integrating multiple trading concepts into a single, easy-to-use script. It combines higher timeframe trend analysis, key price levels, swing point detection, and ranging market identification to provide a holistic view of market conditions. This indicator is particularly useful for traders who employ multi-timeframe analysis, support and resistance levels, and price action strategies.
Key Features
1. Higher Timeframe Trend Background Shading:
• Purpose: Identifies the prevailing trend on a higher timeframe to align lower timeframe trading decisions with the broader market direction.
• How it Works: The indicator compares the current higher timeframe close with the previous one to determine if the trend is up, down, or ranging.
• Customization:
• Trend Timeframe: Set your preferred higher timeframe (e.g., Daily, Weekly).
• Up Trend Color & Down Trend Color: Customize the background colors for uptrends and downtrends.
• Ranging Market Color: A separate color to indicate when the market is moving sideways.
2. Key Price Levels:
• Previous Day High (PDH) and Low (PDL):
• Purpose: Identifies key support and resistance levels from the previous trading day.
• Visualization: Plots horizontal lines at PDH and PDL with labels.
• Customization: Option to show or hide these levels and customize their colors.
• Pre-Market High (PMH) and Low (PML):
• Purpose: Highlights the price range during the pre-market session, which can indicate potential breakout levels.
• Visualization: Plots horizontal lines at PMH and PML with labels.
• Customization: Option to show or hide these levels and customize their colors.
3. First 5-Minute Marker (F5H/F5L):
• Purpose: Marks the high or low of the first 5 minutes after the market opens, which is significant for intraday momentum.
• How it Works:
• If the first 5-minute high is above the Pre-Market High (PMH), an “F5H” label is placed at the first 5-minute high.
• If the first 5-minute high is below the PMH, an “F5L” label is placed at the first 5-minute low.
• Visualization: Labels are placed at the 9:35 AM candle (closing of the first 5 minutes), colored in purple by default.
• Customization: Option to show or hide the marker and adjust the marker color.
4. Swing Points Detection:
• Purpose: Identifies significant pivot points in price action to help recognize trends and reversals.
• How it Works: Uses left and right bars to detect pivot highs and lows, then determines if they are Higher Highs (HH), Lower Highs (LH), Higher Lows (HL), or Lower Lows (LL).
• Visualization: Plots small markers (circles) with labels (HH, LH, HL, LL) at the corresponding swing points.
• Customization: Adjust the number of left and right bars for pivot detection and the size of the markers.
5. Ranging Market Detection:
• Purpose: Identifies periods when the market is consolidating (moving sideways) within a defined price range.
• How it Works: Calculates the highest high and lowest low over a specified period and determines if the price range is within a set percentage threshold.
• Visualization: Draws a gray box around the price action during the ranging period and labels the high and low prices at the end of the range.
• Customization: Adjust the range detection period and threshold, as well as the box color.
6. Trend Coloring on Chart:
• Purpose: Provides a visual cue for the short-term trend based on a moving average.
• How it Works: Colors the candles green if the price is above the moving average and red if below.
• Customization: Set the moving average length and customize the uptrend and downtrend colors.
How to Use the Indicator
1. Adding the Indicator to Your Chart:
• Copy the Pine Script code provided and paste it into the Pine Script Editor on TradingView.
• Click “Add to Chart” to apply the indicator.
2. Configuring Inputs and Settings:
• Access Inputs:
• Click on the gear icon next to the indicator’s name on your chart to open the settings.
• Customize Key Levels:
• Show Pre-Market High/Low: Toggle on/off.
• Show Previous Day High/Low: Toggle on/off.
• Show First 5-Minute Marker: Toggle on/off.
• Set Trend Parameters:
• Trend Timeframe for Background: Choose the higher timeframe for trend analysis.
• Moving Average Length for Bar Color: Set the period for the moving average used in bar coloring.
• Adjust Ranging Market Detection:
• Range Detection Period: Specify the number of bars to consider for range detection.
• Range Threshold (%): Set the maximum percentage range for the market to be considered ranging.
• Customize Visuals:
• Colors: Adjust colors for trends, levels, markers, and ranging market boxes.
• Label Font Size: Choose the size of labels displayed on the chart.
• Level Line Width: Set the thickness of the lines for key levels.
3. Interpreting the Indicator:
• Background Shading:
• Green Shade: Higher timeframe is in an uptrend.
• Red Shade: Higher timeframe is in a downtrend.
• Gray Box: Market is ranging (sideways movement).
• Key Levels and Markers:
• PDH and PDL Lines: Represent resistance and support from the previous day.
• PMH and PML Lines: Indicate potential breakout levels based on pre-market activity.
• F5H/F5L Labels: Early indication of intraday momentum after market open.
• Swing Point Markers:
• HH (Higher High): Suggests bullish momentum.
• LH (Lower High): May indicate a potential bearish reversal.
• HL (Higher Low): Supports bullish continuation.
• LL (Lower Low): Indicates bearish momentum.
• Ranging Market Box:
• Gray Box Around Price Action: Highlights consolidation periods where breakouts may occur.
• Range High and Low Labels: Provide the upper and lower bounds of the consolidation zone.
4. Applying the Indicator to Your Trading Strategy:
• Trend Alignment:
• Use the higher timeframe trend shading to align your trades with the broader market direction.
• Key Levels Trading:
• Watch for price reactions at PDH, PDL, PMH, and PML for potential entry and exit points.
• Swing Points Analysis:
• Identify trend continuations or reversals by observing the sequence of HH, HL, LH, and LL.
• Ranging Market Strategies:
• During ranging periods, consider range-bound trading strategies or prepare for breakout trades when the price exits the range.
• Intraday Momentum:
• Use the F5H/F5L marker to gauge early market sentiment and potential intraday trends.
Practical Tips
• Adjust Settings to Your Trading Style:
• Tailor the indicator’s inputs to match your preferred timeframes and trading instruments.
• Combine with Other Indicators:
• Use in conjunction with volume indicators, oscillators, or other technical tools for additional confirmation.
• Backtesting:
• Apply the indicator to historical data to observe how it performs and refine your settings accordingly.
• Stay Updated on Market Conditions:
• Be aware of news events or economic releases that may impact market behavior and the effectiveness of technical levels.
Customization Options
• Time Zone Adjustment:
• The script uses “America/New_York” time zone by default. Adjust the timezone variable in the script if your chart operates in a different time zone.
var timezone = "Your/Timezone"
• Session Times:
• Modify the Regular Trading Session and Pre-Market Session times in the indicator settings to align with the trading hours of different markets or exchanges.
• Visual Preferences:
• Colors: Personalize the indicator’s colors to suit your visual preferences or to enhance visibility.
• Label Sizes: Adjust label sizes if you find them too intrusive or not prominent enough.
• Marker Sizes: Further reduce or enlarge the swing point markers by modifying the swing_marker_size variable.
Understanding the Indicator’s Logic
1. Higher Timeframe Trend Analysis:
• The indicator retrieves the closing prices of a higher timeframe using the request.security() function.
• It compares the current higher timeframe close with the previous one to determine the trend direction.
2. Key Level Calculation:
• Previous Day High/Low: Calculated by tracking the highest and lowest prices of the previous trading day.
• Pre-Market High/Low: Calculated by monitoring price action during the pre-market session.
3. First 5-Minute Marker Logic:
• At 9:35 AM (end of the first 5 minutes after market open), the indicator evaluates whether the first 5-minute high is above or below the PMH.
• It then places the appropriate label (F5H or F5L) on the chart.
4. Swing Points Detection:
• The script uses ta.pivothigh() and ta.pivotlow() functions to detect pivot points.
• It then determines the type of swing point based on comparisons with previous swings.
5. Ranging Market Detection:
• The indicator looks back over a specified number of bars to find the highest high and lowest low.
• It calculates the percentage difference between these two points.
• If the difference is below the set threshold, the market is considered to be ranging, and a box is drawn around the price action.
Limitations and Considerations
• Indicator Limitations:
• Maximum Boxes and Labels: Due to Pine Script limitations, there is a maximum number of boxes and labels that can be displayed simultaneously.
• Performance Impact: Adding multiple visual elements (boxes, labels, markers) can affect the performance of the script on lower-end devices or with large amounts of data.
• Market Conditions:
• False Signals: Like any technical tool, the indicator may produce false signals, especially during volatile or erratic market conditions.
• Not a Standalone Solution: This indicator should be used as part of a comprehensive trading strategy, including risk management and other forms of analysis.
Conclusion
The “Top-Down Trend and Key Levels with Swing Points” indicator is a versatile tool that integrates essential aspects of technical analysis into one script. By providing insights into higher timeframe trends, highlighting key price levels, detecting swing points, and identifying ranging markets, it equips traders with valuable information to make more informed trading decisions. Whether you are a day trader looking for intraday opportunities or a swing trader aiming to align with the broader trend, this indicator can enhance your chart analysis and trading strategy.
Disclaimer
Trading involves significant risk, and it’s important to understand that past performance is not indicative of future results. This indicator is a tool to assist in analysis and should not be solely relied upon for making trading decisions. Always conduct thorough research and consider seeking advice from financial professionals before engaging in trading activities.
Fibonacci Levels on Any Indicator [By MUQWISHI]▋ INTRODUCTION :
A “Fibonacci Levels on Any Indicator” can be applied to any indicator to draw Fibonacci levels based on provided conditions of two price points to produce a sequence of horizontal line levels starting from 0% to 100% in addition to extension levels. The 0% level is measured as the start of retracement, while the 100% level is the beginning of the extension levels. This tool was developed to be easy to add to any indicator, and it could be valuable to some traders in terms of managing trades by setting targets and reducing risk in the trend direction.
_______________________
▋ USAGE:
➤ NEEDS TO IDENTIFY 4 ELEMENTS:
1. Starting Point. What’re the conditions / When will the drawing of the Fibonacci levels begin?
2. Ending Point. What’re the conditions / When will the drawing of the Fibonacci levels end?
3. High Point. What is the price for a 100% Fibonacci level (0% for the downside)?
4. Low Point. What is the price for a 0% Fibonacci level (100% for the downside)?
➤ STARTING & ENDING POINTS CONDITIONS:
Need to specify the condition when the drawing of Fibonacci levels starts and ends, and the indicator shows different prepared conditions.
New Phase: Import a value (plot) from an existing indicator, where its status changes from NaN to a real number.
Crosses Above/Below: Import a value(1) (plot) from an existing indicator, where it crosses above/below value(2).
Reversal Up/Down: Import a value(1) (plot) from an existing indicator, where it rises/decreases than the previous value(1).
First/Last Bar: Useful to draw stationary Fibonacci levels.
➤ UPPER & LOWER PIVOTS (0% & 100%):
Need to specify the two price points representing 0% & 100% Fibonacci levels to expose the sequence of Fibonacci lines.
Upper Pivot. By default, the ATR Upper Band. It’s possible to import a custom value from an existing indicator.
Lower Pivot. By default, the ATR Lower Band. It’s possible to import a custom value from an existing indicator.
➤ FIBONACCI STYLING OPTIONS:
Ability to customize line & label style, color, reverse, and hide/show levels.
_______________________
▋ IMPLEMENTATION:
Here are some examples of implementing the indicator.
Note: All presented examples below are for demonstration purposes, and they're not trading suggestions.
# Example 1: (Reversal Up/Down)
We want to implement Fibonacci levels on the Hull MA by mohamed982 . Our requirements are as follows:
Fibonacci levels start when the Hull MA reverses up.
Fibonacci levels end when the Hull MA reverses down.
Upper Pivot is the ATR Upper Band.
Lower Pivot is the ATR Lower Band.
After adding the required indicator (Hull MA), here’re the implementation and results
# Example 2: (Crosses Above/Below)
We want to implement Fibonacci Level on the Squeeze Momentum by LazyBear . Our requirements are as follows:
Fibonacci levels start when the Squeeze Momentum histogram crosses above 0.
Fibonacci levels end when the Squeeze Momentum histogram crosses below 0.
Upper Pivot is the Bollinger Upper Band.
Lower Pivot is the Bollinger Lower Band.
After adding the required indicators (Squeeze Momentum & Bollinger Band), here’re the implementation and results
# Example 3: (Crosses Above/Below)
We want to implement Fibonacci Level on the Crossing Moving Averages. Our requirements are as follows:
Fibonacci levels start when the 20-EMA crosses above 100-MA.
Fibonacci levels end when the 20-EMA crosses below 100-MA.
Upper Pivot is the ATR Upper Band.
Lower Pivot is the ATR Lower Band.
After adding the required indicators (20-EMA & 100-MA), here’re the implementation and results
# Example 4: (New Phase: When the previous value is NaN, and the current value is a real number.)
We want to implement Fibonacci Level on the Supertrend. Our requirements are as follows:
Fibonacci levels start when an up-Supertrend (green) line shows up.
Fibonacci levels end when a down-Supertrend (red) line shows up.
Upper Pivot is the down-Supertrend.
Lower Pivot is the up-Supertrend.
After adding the required indicator (Supertrend), here’re the implementation and results
# Example 5: (First/Last Bar)
We want to implement Fibonacci Level between two points, 330 & 300. Our requirements are as follows:
Fibonacci levels start at first bar on the chart.
Fibonacci levels end at last bar on the chart.
Upper Pivot is 330.
Lower Pivot is 300.
Here’re the implementation and results.
To customize the number of bars back (like 50 bars)
_______________________
▋ Final Comments:
The “Fibonacci Levels on Any Indicator” is made to apply on other indicators for planning Fibonacci Levels.
It can be implemented in different ways, along with presented examples.
This indicator does not work with plots that were developed by drawing classes.
Please let me know if you have any questions.
Thank you.
Excellent ADXThe Average Directional movement indeX (ADX) is an indicator that helps you determine the trend direction, pivot points, and much more else! But it looks not so easy as other famous indicators. It seems strange or even terrible, but don't be afraid. Let's understand how it works and get its power into your analysis tactics.
In the beginning, imagine a drunk man goes through a ladder: step by step. Up, up, down, up, down, down, up...
How can we understand which direction he goes? Exactly! We can count the number of steps in each direction. In the above example, in the upward – 4, in the downward – 3. So, it looks like he goes in an upward direction.
The ADX indicator counts the same steps, but for price. The size of each step equals 1 ATR for "DI Length" candles. On the indicator chart, we have the green and red lines. The green line represents a number of steps upward. The red line shows one downward. When the red line upper green, then the price goes below, then the trend is directed down. Later the green line comes above the red one, and then the trend changes the direction to upward. Wow? After that, you can easy detect the trend direction on the market!
But it is still not the end. On the chart, we also have the fat blue line. This is the ADX line, and it represents the power of the trend. It is calculated from a distance between the green and red curves. The ADX line value grows if the distance is increased. If the movement is really powerful, then a number of steps into a direction much more prominent than one in an opposed direction. Then the blue line grows faster. But if the growth has stopped and the blue line turns back or already had changed self-direction, then it is a signal that the trend has ended too. It's an excellent sign to close the position (but not always). Easy? Not quite. Thresholds help you there. The indicator has two additional parameters: upper and lower thresholds to evaluate the trend-over signal strength. An u-turn of the ADX line above the upper threshold sends a strong signal. If one occurs between both thresholds, it is a bit weak signal. But if the blue line goes below the lower threshold, it looks like there is no trend, and the price goes side. We can also say that the price goes side when the ADX value gradually falls down.
The Excellent ADX indicator helps you catch pivot/pullback signals based on green, red, and blue lines. Each such signal is highlighted as a green (buy) or red (sell) dot on the plot. The size of the dot represents the strength of the signal. You can also check the position of green and red lines from each other to determine the trend direction and the place where it has been changed. The Excellent ADX indicator helps you there too. It highlights the trend direction by the background-color, so you'll never miss it! The Excellent ADX good compliance with the Price Channel indicator built for the same length. You can use them together to be on a trend wave always!
AllMA Trend Radar [trade_lexx]📈 AllMA Trend Radar is your universal trend analysis tool!
📊 What is AllMA Trend Radar?
AllMA Trend Radar is a powerful indicator that uses various types of Moving Averages (MA) to analyze trends and generate trading signals. The indicator allows you to choose from more than 30 different types of moving averages and adjust their parameters to suit your trading style.
💡 The main components of the indicator
📈 Fast and slow moving averages
The indicator uses two main lines:
- Fast MA (blue line): reacts faster to price changes
- Slow MA (red line): smoother, reflects a long-term trend
The combined use of fast and slow MA allows you to get trend confirmation and entry/exit points from the market.
🔄 Wide range of moving averages
There are more than 30 types of moving averages at your disposal:
- SMA: Simple moving average
- EMA: Exponential moving average
- WMA: Weighted moving average
- DEMA: double exponential MA
- TEMA: triple exponential MA
- HMA: Hull Moving Average
- LSMA: Moving average of least squares
- JMA: Eureka Moving Average
- ALMA: Arnaud Legoux Moving Average
- ZLEMA: moving average with zero delay
- And many others!
🔍 Indicator signals
1️⃣ Fast 🆚 Slow MA signals (intersection and ratio of fast and slow MA)
Up/Down signals (intersection)
- Buy (Up) signal:
- What happens: the fast MA crosses the slow MA from bottom to top
- What does the green triangle with the "Buy" label under the candle look
like - What does it mean: a likely upward trend reversal or an uptrend strengthening
- Sell signal (Down):
- What happens: the fast MA crosses the slow MA from top to bottom
- What does it look like: a red triangle with a "Sell" mark above the candle
- What does it mean: a likely downtrend reversal or an increase in the downtrend
Greater/Less signals (ratio)
- Buy signal (Greater):
- What happens: the fast MA becomes higher than the slow MA
- What does it look like: a green triangle with a "Buy" label under the candle
- What does it mean: the formation or confirmation of an uptrend
- Sell signal (Less):
- What happens: the fast MA becomes lower than the slow MA
- What does it look like: a red triangle with a "Sell" mark above the candle
- What does it mean: the formation or confirmation of a downtrend
2️⃣ Signals ⚡️ Fast MA (fast MA and price)
Up/Down signals (intersection)
- Buy signal (Up Fast):
- What happens: the price crosses the fast MA from bottom to top
- What does it look like: a green triangle with a "Buy" label under the candle
- What does it mean: a short-term price growth signal
- Sell signal (Down Fast):
- What happens: the price crosses the fast MA from top to bottom
- What does it look like: a red triangle with a "Sell" label above the candle
- What does it mean: a short-term price drop signal
Greater/Less signals (ratio)
- Buy signal (Greater Fast):
- What happens: the price is getting higher than the fast MA
- What does it look like: a green triangle with a "Buy" label under the candle
- What does it mean: the price is above the fast MA, which indicates an upward movement
- Sell signal (Less Fast):
- What happens: the price is getting lower than the fast MA
- What does it look like: a red triangle with a "Sell" mark above the candle
- What does it mean: the price is under the fast MA, which indicates a downward movement
3️⃣ Signals 🐢 Slow MA (slow MA and price)
Up/Down signals (intersection)
- Buy signal (Up Slow):
- What happens: the price crosses the slow MA from bottom to top
- What does it look like: a green triangle with a "Buy" label under the candle
- What does it mean: a potential medium-term upward trend reversal
- Sell signal (Down Slow):
- What happens: the price crosses the slow MA from top to bottom
- What does it look like: a red triangle with a "Sell" label above the candle
- What does it mean: a potential medium-term downward trend reversal
Greater/Less signals (ratio)
- Buy signal (Greater Slow):
- What happens: the price is getting above the slow MA
- What does it look like: a green triangle with a "Buy" label under the candle
- What does it mean: the price is above the slow MA, which indicates a strong upward movement
- Sell signal (Less Slow):
- What is happening: the price is getting below the slow MA
- What does it look like: a red triangle with a "Sell" mark above the candle
- What does it mean: the price is under the slow MA, which indicates a strong downward movement
🛠 Filters to filter out false signals
1️⃣ Minimum distance between the signals
- What it does: sets the minimum number of candles between signals of the same type
- Why it is needed: it prevents the appearance of too frequent signals, especially during periods of high volatility
- How to set it up: Set a different value for each signal type (default: 3-5 bars)
- Example: if the value is 3 for Up/Down signals, after the buy signal appears, the next buy signal may appear no earlier than 3 bars later
2️⃣ Advanced indicator filters
🔍 RSI Filter
- What it does: Checks the Relative Strength Index (RSI) value before generating a signal
- Why it is needed: it helps to avoid countertrend entries and catch reversal points
- How to set up:
- For buy signals (🔋 Buy): set the RSI range, usually in the oversold zone (for example, 1-30)
- For sell signals (🪫 Sell): set the RSI range, usually in the overbought zone (for example, 70-100)
- Example: if the RSI = 25 (in the range 1-30), the buy signal will be confirmed
📊 MFI Filter (Cash Flow Index)
- What it does: analyzes volumes and the direction of price movement
- Why it is needed: confirms signals with data on the activity of cash flows
- How to set up:
- For buy signals (🔋 Buy): set the MFI range in the oversold zone (for example, 1-25)
- For sell signals (🪫 Sell): set the MFI range in the overbought zone (for example, 75-100)
- Example: if MFI = 80 (in the range of 75-100), the sell signal will be confirmed
📈 Stochastic Filter
- What it does: analyzes the position of the current price relative to the price range
- Why it is needed: confirms signals based on overbought/oversold conditions
- How to configure:
- You can configure the K Length, D Length and Smoothing parameters
- For buy signals (🔋 Buy): set the stochastic range in the oversold zone (for example, 1-20)
- For sell signals (🪫 Sell): set the stochastic range in the overbought zone (for example, 80-100)
- Example: if stochastic = 15 (is in the range of 1-20), the buy signal will be confirmed
🔌 Connecting to trading strategies
The indicator provides various connectors to connect to your trading strategies.:
1️⃣ Individual connectors for each type of signal
- 🔌Fast vs Slow Up/Down MA Signal🔌: signals for the intersection of fast and slow MA
- 🔌Fast vs Slow Greater/Less MA Signal🔌: signals of the ratio of fast and slow MA
- 🔌Fast Up/Down MA Signal🔌: signals of the intersection of price and fast MA
- 🔌Fast Greater/Less MA Signal🔌: signals of the ratio of price and fast MA
- 🔌Slow Up/Down MA Signal🔌: signals of the intersection of price and slow MA
- 🔌Slow Greater/Less MA Signal🔌: Price versus slow MA signals
2️⃣ Combined connectors
- 🔌Combined Up/Down MA Signal🔌: combines all the crossing signals (Up/Down)
- 🔌Combined Greater/Less MA Signal🔌: combines all the signals of the ratio (Greater/Less)
- 🔌Combined All MA Signals🔌: combines all signals (Up/Down and Greater/Less)
❗️ All connectors return values:
- 1: buy signal
- -1: sell signal
- 0: no signal
📚 How to start using AllMA Trend Radar
1️⃣ Selection of types of moving averages
- Add an indicator to the chart
- Select the type and period for the fast MA (default: DEMA with a period of 14)
- Select the type and period for the slow MA (default: SMA with a period of 14)
- Experiment with different types of MA to find the best combination for your trading style
2️⃣ Signal settings
- Turn on the desired signal types (Up/Down, Greater/Less)
- Set the minimum distance between the signals
- Activate and configure the necessary filters (RSI, MFI, Stochastic)
3️⃣ Checking on historical data
- Analyze how the indicator works based on historical data
- Pay attention to the accuracy of the signals and the presence of false alarms
- Adjust the settings if necessary
4️⃣ Introduction to the trading strategy
- Decide which signals will be used to enter the position.
- Determine which signals will be used to exit the position.
- Connect the indicator to your trading strategy through the appropriate connectors
🌟 Practical application examples
Scalping strategy
- Fast MA: TEMA with a period of 8
- Slow MA: EMA with a period of 21
- Active signals: Fast MA Up/Down
- Filters: RSI (range 1-40 for purchases, 60-100 for sales)
- Signal spacing: 3 bars
Strategy for day trading
- Fast MA: TEMA with a period of 10
- Slow MA: SMA with a period of 20
- Active signals: Fast MA Up/Down and Fast vs Slow Greater/Less
- Filters: MFI (range 1-25 for purchases, 75-100 for sales)
- Signal spacing: 5 bars
Swing Trading Strategy
- Fast MA: DEMA with a period of 14
- Slow MA: VWMA with a period of 30
- Active signals: Fast vs Slow Up/Down and Slow MA Greater/Less
- Filters: Stochastic (range 1-20 for purchases, 80-100 for sales)
- Signal spacing: 8 bars
A strategy for positional trading
- Fast MA: HMA with a period of 21
- Slow MA: SMA with a period of 50
- Active signals: Slow MA Up/Down and Fast vs Slow Greater/Less
- Filters: RSI and MFI at the same time
- The distance between the signals: 10 bars
💡 Tips for using AllMA Trend Radar
1. Select the types of MA for market conditions:
- For trending markets: DEMA, TEMA, HMA (fast MA)
- For sideways markets: SMA, WMA, VWMA (smoothed MA)
- For volatile markets: KAMA, AMA, VAMA (adaptive MA)
2. Combine different types of signals:
- Up/Down signals work better when moving from a sideways trend to a directional
one - Greater/Less signals are optimal for fixing a stable trend
3. Use filters effectively:
- The RSI filter works great in trending markets
- MFI filter helps to confirm the strength of volume movement
- Stochastic filter works well in lateral ranges
4. Adjust the minimum distance between the signals:
- Small values (2-3 bars) for short-term trading
- Average values (5-8 bars) for medium-term trading
- Large values (10+ bars) for long-term trading
5. Use combination connectors:
- For more reliable signals, connect the indicator through the combined connectors
💰 With the AllMA Trend Radar indicator, you get a universal trend analysis tool that can be customized for any trading style and timeframe. The combination of different types of moving averages and advanced filters allows you to significantly improve the accuracy of signals and the effectiveness of your trading strategy!
Dow Theory Trend StrategyDow Theory Trend Strategy (Pine Script)
Overview
This Pine Script implements a trading strategy based on the core principles of Dow Theory. It visually identifies trends (uptrend, downtrend) by analyzing pivot highs and lows and executes trades when the trend direction changes. This script is an improved version that features refined trend determination logic and strategy implementation.
Core Concept: Dow Theory
The script uses a fundamental Dow Theory concept for trend identification:
Uptrend: Characterized by a series of Higher Highs (HH) and Higher Lows (HL).
Downtrend: Characterized by a series of Lower Highs (LH) and Lower Lows (LL).
How it Works
Pivot Point Detection:
It uses the built-in ta.pivothigh() and ta.pivotlow() functions to identify significant swing points (potential highs and lows) in the price action.
The pivotLookback input determines the number of bars to the left and right required to confirm a pivot. Note that this introduces a natural lag (equal to pivotLookback bars) before a pivot is confirmed.
Improved Trend Determination:
The script stores the last two confirmed pivot highs and the last two confirmed pivot lows.
An Uptrend (trendDirection = 1) is confirmed only when the latest pivot high is higher than the previous one (HH) AND the latest pivot low is higher than the previous one (HL).
A Downtrend (trendDirection = -1) is confirmed only when the latest pivot high is lower than the previous one (LH) AND the latest pivot low is lower than the previous one (LL).
Key Improvement: If neither a clear uptrend nor a clear downtrend is confirmed based on the latest pivots, the script maintains the previous trend state (trendDirection := trendDirection ). This differs from simpler implementations that might switch to a neutral/range state (e.g., trendDirection = 0) more frequently. This approach aims for smoother trend following, acknowledging that trends often persist through periods without immediate new HH/HL or LH/LL confirmations.
Trend Change Detection:
The script monitors changes in the trendDirection variable.
changedToUp becomes true when the trend shifts to an Uptrend (from Downtrend or initial state).
changedToDown becomes true when the trend shifts to a Downtrend (from Uptrend or initial state).
Visualizations
Background Color: The chart background is colored to reflect the currently identified trend:
Blue: Uptrend (trendDirection == 1)
Red: Downtrend (trendDirection == -1)
Gray: Initial state or undetermined (trendDirection == 0)
Pivot Points (Optional): Small triangles (shape.triangledown/shape.triangleup) can be displayed above pivot highs and below pivot lows if showPivotPoints is enabled.
Trend Change Signals (Optional): Labels ("▲ UP" / "▼ DOWN") can be displayed when a trend change is confirmed (changedToUp / changedToDown) if showTrendChange is enabled. These visually mark the potential entry points for the strategy.
Strategy Logic
Entry Conditions:
Enters a long position (strategy.long) using strategy.entry("L", ...) when changedToUp becomes true.
Enters a short position (strategy.short) using strategy.entry("S", ...) when changedToDown becomes true.
Position Management: The script uses strategy.entry(), which automatically handles position reversal. If the strategy is long and a short signal occurs, strategy.entry() will close the long position and open a new short one (and vice-versa).
Inputs
pivotLookback: The number of bars on each side to confirm a pivot high/low. Higher values mean pivots are confirmed later but may be more significant.
showPivotPoints: Toggle visibility of pivot point markers.
showTrendChange: Toggle visibility of the trend change labels ("▲ UP" / "▼ DOWN").
Key Improvements from Original
Smoother Trend Logic: The trend state persists unless a confirmed reversal pattern (opposite HH/HL or LH/LL) occurs, reducing potential whipsaws in choppy markets compared to logic that frequently resets to neutral.
Strategy Implementation: Converted from a pure indicator to a strategy capable of executing backtests and potentially live trades based on the Dow Theory trend changes.
Disclaimer
Dow Theory signals are inherently lagging due to the nature of pivot confirmation.
The effectiveness of the strategy depends heavily on the market conditions and the chosen pivotLookback setting.
This script serves as a basic template. Always perform thorough backtesting and implement proper risk management (e.g., stop-loss, take-profit, position sizing) before considering any live trading.
DataDoodles SD + ProbabilityDataDoodles SD + Probability
Overview:
The “DataDoodles SD + Probability” indicator is designed to provide traders with a statistical edge by leveraging standard deviation and probability metrics. This advanced tool calculates the annualized standard deviation, Z-score, and probability of price movements, offering insights into potential market direction with customizable alert thresholds.
Key Features:
1. Annualized Standard Deviation (Volatility) Calculation:
• Uses a user-defined period to compute the rolling standard deviation of daily returns.
• Annualizes the volatility, giving a clear picture of expected price fluctuations.
2. Probability of Price Movement:
• Calculates the probability of price moving up or down using a corrected Z-Score.
• Displays the probability percentage for both upward and downward movements.
3. Dynamic Alerts:
• Configurable alerts for upward and downward price movement probabilities.
• Receive alerts when the probability exceeds user-defined thresholds.
4. Projections and Visuals:
• Plots projected high and low price levels based on annualized volatility.
• Displays Z-Score and probability metrics on the chart for quick reference.
5. Comprehensive Data Table:
• Bottom-center table displays key metrics:
• Daily Return
• Standard Deviation (SD)
• Annualized Standard Deviation (Yearly SD)
User Inputs:
• Annualization Period: Set the time frame for volatility annualization (Default: 252 days).
• SD Period: Define the rolling window for calculating standard deviation (Default: 252 days).
• Alert Probability Up/Down: Customize the probability thresholds for alerts (Default: 90%).
How It Works:
• Data Request and Calculation:
• Uses daily close prices to ensure consistent timeframe calculations.
• Calculates daily returns and annualizes the volatility using the square root of the time frame.
• Probability Computation:
• Employs a normal distribution CDF approximation to compute the probability of upward and downward price movements.
• Adjusts probabilities based on Z-Score to ensure accuracy.
• High and Low Projections:
• Utilizes the annualized volatility to estimate high and low price projections for the year.
• Visual Indicators and Alerts:
• Plots projected high (green) and low (red) levels on the chart.
• Displays Z-Score, probability percentages, and dynamically updates a statistics table.
Use Cases:
• Trend Analysis: Identify high-probability market movements using the probability metrics.
• Volatility Insights: Understand annualized volatility to gauge market risk and potential price ranges.
• Strategic Trading Decisions: Set alerts for high-probability scenarios to optimize entry and exit points.
Why Use “DataDoodles SD + Probability”?
This indicator provides a powerful combination of statistical analysis and visual representation. It empowers traders with:
• Quantitative Edge: By leveraging probability metrics and standard deviation, users can make informed trading decisions.
• Risk Management: Annualized volatility projections help in setting realistic stop-loss and take-profit levels.
• Actionable Alerts: Customizable probability alerts ensure users are notified of potential market moves, allowing proactive trading strategies.
Recommended Settings:
• Annualization Period: 252 (Ideal for daily data representing a trading year)
• SD Period: 252 (One trading year for consistent volatility calculations)
• Alert Probability: Set to 90% for conservative signals or lower for more frequent alerts.
Final Thoughts:
The “DataDoodles SD + Probability” indicator is a robust tool for traders looking to integrate statistical analysis into their trading strategies. It combines volatility measurement, probability calculations, and dynamic alerts to provide a comprehensive market overview.
Whether you’re a day trader or a long-term investor, this indicator can enhance your market insight and improve decision-making accuracy.
Disclaimer:
This indicator is a technical analysis tool designed for educational purposes. Past performance is not indicative of future results. Traders are encouraged to perform their own analysis and manage risk accordingly.
Alerts█ OVERVIEW
This library is a Pine Script™ programmers tool that provides functions to simplify the creation of compound conditions and alert messages. With these functions, scripts can use comma-separated "string" lists to specify condition groups from arbitrarily large "bool" arrays , offering a convenient way to provide highly flexible alert creation to script users without requiring numerous inputs in the "Settings/Inputs" menu.
█ CONCEPTS
Compound conditions
Compound conditions are essentially groups of two or more conditions, where each required condition must occur to produce a `true` result. Traders often combine conditions, including signals from various indicators, to drive and reinforce trade decisions. Similarly, programmers use compound conditions in logical operations to create scripts that respond dynamically to groups of events.
Condition conundrum
Providing flexible condition combinations to script users for signals and alerts often poses a significant challenge: input complexity . Conventionally, such flexibility comes at the cost of an extensive list of separate inputs for toggling individual conditions and customizing their properties, often resulting in complicated input menus that are difficult for users to navigate effectively. Furthermore, managing all those inputs usually entails tediously handling many extra variables and logical expressions, making such projects more complex for programmers.
Condensing complexity
This library introduces a technique using parsed strings to reference groups of elements from "bool" arrays , helping to simplify and streamline the construction of compound conditions and alert messages. With this approach, programmers can provide one or more "string" inputs in their scripts where users can list numbers corresponding to the conditions they want to combine.
For example, suppose you have a script that creates alert triggers based on a combination of up to 20 individual conditions, and you want to make inputs for users to choose which conditions to combine. Instead of creating 20 separate checkboxes in the "Settings/Inputs" tab and manually adding associated logic for each one, you can store the conditional values in arrays, make one or more "string" inputs that accept values listing the array item locations (e.g., "1,4,8,11"), and then pass the inputs to these functions to determine the compound conditions formed by the specified groups.
This approach condenses the input space, improving navigability and utility. Additionally, it helps provide high-level simplicity to complex conditional code, making it easier to maintain and expand over time.
█ CALCULATIONS AND USE
This library contains three functions for evaluating compound conditions: `getCompoundConditon()`, `getCompoundConditionsArray()`, and `compoundAlertMessage()`. Each function has two overloads that evaluate compound conditions based on groups of items from one or two "bool" arrays . The sections below explain the functions' calculations and how to use them.
Referencing conditions using "string" index lists
Each function processes "string" values containing comma-separated lists of numerals representing the indices of the "bool" array items to use in its calculations (e.g., "4, 8, 12"). The functions split each supplied "string" list by its commas, then iterate over those specified indices in the "bool" arrays to determine each group's combined `true` or `false` state.
For convenience, the numbers in the "string" lists can represent zero-based indices (where the first item is at index 0) or one-based indices (where the first item is at index 1), depending on the function's `zeroIndex` parameter. For example, an index list of "0, 2, 4" with a `zeroIndex` value of `true` specifies that the condition group uses the first , third , and fifth "bool" values in the array, ignoring all others. If the `zeroIndex` value is `false`, the list "1, 3, 5" also refers to those same elements.
Zero-based indexing is convenient for programmers because Pine arrays always use this index format. However, one-based indexing is often more convenient and familiar for script users, especially non-programmers.
Evaluating one or many condition groups
The `getCompoundCondition()` function evaluates singular condition groups determined by its `indexList` parameter, returning `true` values whenever the specified array elements are `true`. This function is helpful when a script has to evaluate specific groups of conditions and does not require many combinations.
In contrast, the `getCompoundConditionsArray()` function can evaluate numerous condition groups, one for each "string" included in its `indexLists` argument. It returns arrays containing `true` or `false` states for each listed group. This function is helpful when a script requires multiple condition combinations in additional calculations or logic.
The `compoundAlertMessage()` function is similar to the `getCompoundConditionsArray()` function. It also evaluates a separate compound condition group for each "string" in its `indexLists` array, but it returns "string" values containing the marker (name) of each group with a `true` result. You can use these returned values as the `message` argument in alert() calls, display them in labels and other drawing objects, or even use them in additional calculations and logic.
Directional condition pairs
The first overload of each function operates on a single `conditions` array, returning values representing one or more compound conditions from groups in that array. These functions are ideal for general-purpose condition groups that may or may not represent direction information.
The second overloads accept two arrays representing upward and downward conditions separately: `upConditions` and `downConditions`. These overloads evaluate opposing directional conditions in pairs (e.g., RSI is above/below a level) and return upward and downward condition information separately in a tuple .
When using the directional overloads, ensure the `upConditions` and `downConditions` arrays are the same size, with the intended condition pairs at the same indices . For instance, if you have a specific upward RSI condition's value at the first index in the `upConditions` array, include the opposing downward RSI condition's value at that same index in the `downConditions` array. If a condition can apply to both directions (e.g., rising volume), include its value at the same index in both arrays.
Group markers
To simplify the generation of informative alert messages, the `compoundAlertMessage()` function assigns "string" markers to each condition group, where "marker" refers to the group's name. The `groupMarkers` parameter allows you to assign custom markers to each listed group. If not specified, the function generates default group markers in the format "M", where "M" is short for "Marker" and "" represents the group number starting from 1. For example, the default marker for the first group specified in the `indexLists` array is "M1".
The function's returned "string" values contain a comma-separated list with markers for each activated condition group (e.g., "M1, M4"). The function's second overload, which processes directional pairs of conditions, also appends extra characters to the markers to signify the direction. The default for upward groups is "▲" (e.g., "M1▲") and the default for downward ones is "▼" (e.g., "M1▼"). You can customize these appended characters with the `upChar` and `downChar` parameters.
Designing customizable alerts
We recommend following these primary steps when using this library to design flexible alerts for script users:
1. Create text inputs for users to specify comma-separated lists of conditions with the input.string() or input.text_area() functions, and then collect all the input values in a "string" array . Note that each separate "string" in the array will represent a distinct condition group.
2. Create arrays of "bool" values representing the possible conditions to choose from. If your script will process pairs of upward and downward conditions, ensure the related elements in the arrays align at the same indices.
3. Call `compoundAlertMessage()` using the arrays from steps 1 and 2 as arguments to get the alert message text. If your script will use the text for alerts only, not historical display or calculation purposes, the call is necessary only on realtime bars .
4. Pass the calculated "string" values as the `message` argument in alert() calls. We recommend calling the function only when the "string" is not empty (i.e., `messageText != ""`). To avoid repainting alerts on open bars, use barstate.isconfirmed in the condition to allow alert triggers only on each bar's close .
5. Test the alerts. Open the "Create Alert" dialog box and select "Any alert() function call" in the "Condition" field. It is also helpful to inspect the strings with Pine Logs .
NOTE: Because the techniques in this library use lists of numbers to specify conditions, we recommend including a tooltip for the "string" inputs that lists the available numbers and the conditions they represent. This tooltip provides a legend for script users, making it simple to understand and utilize. To create the tooltip, declare a "const string" listing the options and pass it to the `input.*()` call's `tooltip` parameter. See the library's example code for a simple demonstration.
█ EXAMPLE CODE
This library's example code demonstrates one possible way to offer a selection of compound conditions with "string" inputs and these functions. It uses three input.string() calls, each accepting a comma-separated list representing a distinct condition group. The title of each input represents the default group marker that appears in the label and alert text. The code collects these three input values in a `conditionGroups` array for use with the `compoundAlertMessage()` function.
In this code, we created two "bool" arrays to store six arbitrary condition pairs for demonstration:
1. Bar up/down: The bar's close price must be above the open price for upward conditions, and vice versa for downward conditions.
2. Fast EMA above/below slow EMA : The 9-period Exponential Moving Average of close prices must be above the 21-period EMA for upward conditions, and vice versa for downward conditions.
3. Volume above average : The bar's volume must exceed its 20-bar average to activate an upward or downward condition.
4. Volume rising : The volume must exceed that of the previous bar to activate an upward or downward condition.
5. RSI trending up/down : The 14-period Relative Strength Index of close prices must be between 50 and 70 for upward conditions, and between 30 and 50 for downward conditions.
6. High volatility : The 7-period Average True Range (ATR) must be above the 40-period ATR to activate an upward or downward condition.
We included a `tooltip` argument for the third input.string() call that displays the condition numbers and titles, where 1 is the first condition number.
The `bullConditions` array contains the `true` or `false` states of all individual upward conditions, and the `bearConditions` array contains all downward condition states. For the conditions that filter either direction because they are non-directional, such as "High volatility", both arrays contain the condition's `true` or `false` value at the same index. If you use these conditions alone, they activate upward and downward alert conditions simultaneously.
The example code calls `compoundAlertMessage()` using the `bullConditions`, `bearConditions`, and `conditionGroups` arrays to create a tuple of strings containing the directional markers for each activated group. On confirmed bars, it displays non-empty strings in labels and uses them in alert() calls. For the text shown in the labels, we used str.replace_all() to replace commas with newline characters, aligning the markers vertically in the display.
Look first. Then leap.
█ FUNCTIONS
This library exports the following functions:
getCompoundCondition(conditions, indexList, minRequired, zeroIndex)
(Overload 1 of 2) Determines a compound condition based on selected elements from a `conditions` array.
Parameters:
conditions (array) : (array) An array containing the possible "bool" values to use in the compound condition.
indexList (string) : (series string) A "string" containing a comma-separated list of whole numbers representing the group of `conditions` elements to use in the compound condition. For example, if the value is `"0, 2, 4"`, and `minRequired` is `na`, the function returns `true` only if the `conditions` elements at index 0, 2, and 4 are all `true`. If the value is an empty "string", the function returns `false`.
minRequired (int) : (series int) Optional. Determines the minimum number of selected conditions required to activate the compound condition. For example, if the value is 2, the function returns `true` if at least two of the specified `conditions` elements are `true`. If the value is `na`, the function returns `true` only if all specified elements are `true`. The default is `na`.
zeroIndex (bool) : (series bool) Optional. Specifies whether the `indexList` represents zero-based array indices. If `true`, a value of "0" in the list represents the first array index. If `false`, a `value` of "1" represents the first index. The default is `true`.
Returns: (bool) `true` if `conditions` elements in the group specified by the `indexList` are `true`, `false` otherwise.
getCompoundCondition(upConditions, downConditions, indexList, minRequired, allowUp, allowDown, zeroIndex)
(Overload 2 of 2) Determines upward and downward compound conditions based on selected elements from `upConditions` and `downConditions` arrays.
Parameters:
upConditions (array) : (array) An array containing the possible "bool" values to use in the upward compound condition.
downConditions (array) : (array) An array containing the possible "bool" values to use in the downward compound condition.
indexList (string) : (series string) A "string" containing a comma-separated list of whole numbers representing the `upConditions` and `downConditions` elements to use in the compound conditions. For example, if the value is `"0, 2, 4"` and `minRequired` is `na`, the function returns `true` for the first value only if the `upConditions` elements at index 0, 2, and 4 are all `true`. If the value is an empty "string", the function returns ` `.
minRequired (int) : (series int) Optional. Determines the minimum number of selected conditions required to activate either compound condition. For example, if the value is 2, the function returns `true` for its first value if at least two of the specified `upConditions` elements are `true`. If the value is `na`, the function returns `true` only if all specified elements are `true`. The default is `na`.
allowUp (bool) : (series bool) Optional. Controls whether the function considers upward compound conditions. If `false`, the function ignores the `upConditions` array, and the first item in the returned tuple is `false`. The default is `true`.
allowDown (bool) : (series bool) Optional. Controls whether the function considers downward compound conditions. If `false`, the function ignores the `downConditions` array, and the second item in the returned tuple is `false`. The default is `true`.
zeroIndex (bool) : (series bool) Optional. Specifies whether the `indexList` represents zero-based array indices. If `true`, a value of "0" in the list represents the first array index. If `false`, a value of "1" represents the first index. The default is `true`.
Returns: ( ) A tuple containing two "bool" values representing the upward and downward compound condition states, respectively.
getCompoundConditionsArray(conditions, indexLists, zeroIndex)
(Overload 1 of 2) Creates an array of "bool" values representing compound conditions formed by selected elements from a `conditions` array.
Parameters:
conditions (array) : (array) An array containing the possible "bool" values to use in each compound condition.
indexLists (array) : (array) An array of strings containing comma-separated lists of whole numbers representing the `conditions` elements to use in each compound condition. For example, if an item is `"0, 2, 4"`, the corresponding item in the returned array is `true` only if the `conditions` elements at index 0, 2, and 4 are all `true`. If an item is an empty "string", the item in the returned array is `false`.
zeroIndex (bool) : (series bool) Optional. Specifies whether the "string" lists in the `indexLists` represent zero-based array indices. If `true`, a value of "0" in a list represents the first array index. If `false`, a value of "1" represents the first index. The default is `true`.
Returns: (array) An array of "bool" values representing compound condition states for each condition group. An item in the array is `true` only if all the `conditions` elements specified by the corresponding `indexLists` item are `true`. Otherwise, the item is `false`.
getCompoundConditionsArray(upConditions, downConditions, indexLists, allowUp, allowDown, zeroIndex)
(Overload 2 of 2) Creates two arrays of "bool" values representing compound upward and
downward conditions formed by selected elements from `upConditions` and `downConditions` arrays.
Parameters:
upConditions (array) : (array) An array containing the possible "bool" values to use in each upward compound condition.
downConditions (array) : (array) An array containing the possible "bool" values to use in each downward compound condition.
indexLists (array) : (array) An array of strings containing comma-separated lists of whole numbers representing the `upConditions` and `downConditions` elements to use in each compound condition. For example, if an item is `"0, 2, 4"`, the corresponding item in the first returned array is `true` only if the `upConditions` elements at index 0, 2, and 4 are all `true`. If an item is an empty "string", the items in both returned arrays are `false`.
allowUp (bool) : (series bool) Optional. Controls whether the function considers upward compound conditions. If `false`, the function ignores the `upConditions` array, and all elements in the first returned array are `false`. The default is `true`.
allowDown (bool) : (series bool) Optional. Controls whether the function considers downward compound conditions. If `false`, the function ignores the `downConditions` array, and all elements in the second returned array are `false`. The default is `true`.
zeroIndex (bool) : (series bool) Optional. Specifies whether the "string" lists in the `indexLists` represent zero-based array indices. If `true`, a value of "0" in a list represents the first array index. If `false`, a value of "1" represents the first index. The default is `true`.
Returns: ( ) A tuple containing two "bool" arrays:
- The first array contains values representing upward compound condition states determined using the `upConditions`.
- The second array contains values representing downward compound condition states determined using the `downConditions`.
compoundAlertMessage(conditions, indexLists, zeroIndex, groupMarkers)
(Overload 1 of 2) Creates a "string" message containing a comma-separated list of markers representing active compound conditions formed by specified element groups from a `conditions` array.
Parameters:
conditions (array) : (array) An array containing the possible "bool" values to use in each compound condition.
indexLists (array) : (array) An array of strings containing comma-separated lists of whole numbers representing the `conditions` elements to use in each compound condition. For example, if an item is `"0, 2, 4"`, the corresponding marker for that item appears in the returned "string" only if the `conditions` elements at index 0, 2, and 4 are all `true`.
zeroIndex (bool) : (series bool) Optional. Specifies whether the "string" lists in the `indexLists` represent zero-based array indices. If `true`, a value of "0" in a list represents the first array index. If `false`, a value of "1" represents the first index. The default is `true`.
groupMarkers (array) : (array) Optional. If specified, sets the marker (name) for each condition group specified in the `indexLists` array. If `na`, the function uses the format `"M"` for each group, where "M" is short for "Marker" and `` represents the one-based index for the group (e.g., the marker for the first listed group is "M1"). The default is `na`.
Returns: (string) A "string" containing a list of markers corresponding to each active compound condition.
compoundAlertMessage(upConditions, downConditions, indexLists, allowUp, allowDown, zeroIndex, groupMarkers, upChar, downChar)
(Overload 2 of 2) Creates two "string" messages containing comma-separated lists of markers representing active upward and downward compound conditions formed by specified element groups from `upConditions` and `downConditions` arrays.
Parameters:
upConditions (array) An array containing the possible "bool" values to use in each upward compound condition.
downConditions (array) An array containing the possible "bool" values to use in each downward compound condition.
indexLists (array) An array of strings containing comma-separated lists of whole numbers representing the `upConditions` and `downConditions` element groups to use in each compound condition. For example, if an item is `"0, 2, 4"`, the corresponding group marker for that item appears in the first returned "string" only if the `upConditions` elements at index 0, 2, and 4 are all `true`.
allowUp (bool) Optional. Controls whether the function considers upward compound conditions. If `false`, the function ignores the `upConditions` array and returns an empty "string" for the first tuple element. The default is `true`.
allowDown (bool) Optional. Controls whether the function considers downward compound conditions. If `false`, the function ignores the `downConditions` array and returns an empty "string" for the second tuple element. The default is `true`.
zeroIndex (bool) Optional. Specifies whether the "string" lists in the `indexLists` represent zero-based array indices. If `true`, a value of "0" in a list represents the first array index. If `false`, a value of "1" represents the first index. The default is `true`.
groupMarkers (array) Optional. If specified, sets the name (marker) of each condition group specified in the `indexLists` array. If `na`, the function uses the format `"M"` for each group, where "M" is short for "Marker" and `` represents the one-based index for the group (e.g., the marker for the first listed group is "M1"). The default is `na`.
upChar (string) Optional. A "string" appended to all group markers for upward conditions to signify direction. The default is "▲".
downChar (string) Optional. A "string" appended to all group markers for downward conditions to signify direction. The default is "▼".
Returns: ( ): A tuple of "string" values containing lists of markers corresponding to active upward and downward compound conditions, respectively.
Bernoulli Price Dynamics with IntraBar Volume (Bidirectional)This indicator adapts the principles of Bernoulli’s equation from fluid dynamics to analyze price and volume dynamics in the market. By incorporating intrabar volume data and splitting price movements into upward and downward components, it provides a bidirectional view of the market's kinetic and potential energies. This approach helps assess market pressure in both upward and downward directions, offering insights into potential price movement with energy-based mechanics.
Key Features:
Intrabar Volume Integration: The indicator collects up and down volume data from a lower timeframe, such as seconds or minutes, to provide more granular insights.
Bidirectional Market Pressure: By separating upward and downward price movements, it calculates market pressure in both directions, which is akin to fluid pressure. The separation enables tracking of distinct upward and downward energy flows in the market.
Energy Calculation:
Kinetic Energy: This represents the "movement" aspect of the price, weighted by volume. It is calculated for both upward and downward movements based on price velocity squared.
Potential Energy: This represents the "position" aspect of the price, calculated as the product of volume and the current price level. It is also separated into upward and downward components.
Market Pressure: The difference between the total energy (sum of kinetic and potential energies) and the highest observed total energy over a defined period (N). This provides an insight into the current momentum of price movement in both directions.
Visualization:
Market Pressure Up/Down: Plots the calculated market pressure for upward (green) and downward (red) movements.
Kinetic and Potential Energies: Provides individual plots for kinetic and potential energy in both directions to analyze the behavior of price and volume in more detail.
This indicator can be used to track market momentum and potential reversals by understanding the energy and pressure dynamics in both upward and downward price movements.
Volume Delta Trailing Stop [LuxAlgo]The ' Volume Delta Trailing Stop ' indicator uses Lower Time Frame (LTF) volume delta data which can provide potential entries together with a Volume-Delta based Trailing Stop-line .
🔶 USAGE
Our 'Volume Delta Trailing Stop' script can show potential entries/Stop Loss lines
A trigger line needs to be broken before a position is taken, after which a Volume Delta-controlled Trailing Stop-line is created:
🔶 DETAILS
🔹 Volume rises when bought or sold
🔹 When the opening price appears on the chart, a buy/sell order has been executed.
If that order is less than the available supply of that particular price, volume will rise, without moving the price.
🔹 When the opening price is the same as the closing price, the volume of that bar can be seen as "neutral volume" (nV); nor "up", nor "down" volume.
Example
A buy order doesn't fill the first available supply in the order book. This price will be the opening price with a certain volume.
When at closing time, price still hasn't moved (the first available supply in the order book isn't filled, or no movement downwards),
the closing price will be equal to the opening price, but with volume. This can be seen as "neutral volume (nV)".
🔹 Delta Volume (ΔV): this is "up volume" minus "down volume"
🔹 Standard volume is colored red when closing price is lower than opening price ( = "down volume").
🔹 Standard volume is colored green when closing price is higher OR equal (nV) than opening price ( = "up volume").
🔹 Neutral Volume
The "Neutral-Volume" is considered "Up-Volume" - setting will dictate whether nV is considered as green 'buy' volume or not.
🔶 EXAMPLE
29 July 10:00 -> 10:05, chart timeframe 5 minutes, open 29311.28, close 29313.89
close > open, so the volume (39.55) is colored green ("up volume").
(The Volume script used in the following examples is the open-source publication Volume Columns w. Alerts (V) from LucF )
Let's zoom to the 1-minute TF:
The same period is now divided into more bars, volume direction (color) is dependable on the difference between open and close.
Counting up and down volume gives a more detailed result, it remains in an upward direction though):
(ΔV = +15.51)
Let's further zoom in to the 1-second TF:
The same period is now divided into even more bars (more possibility for changing direction on each bar)
Here we see several bars that haven't moved in price, but they have volume ("neutral" volume).
(neutral volume is coloured light green here, while up volume is coloured darker green)
When we count all green and red volume bars, the result is quite different:
(ΔV = -0.35)
In total more volume is found when price went downwards, yet price went up in these 5 minutes.
-> This is the heart of our publication, when this divergence occurs, you can see a barcolor changement:
• orange: when price went up, but LTF Volume was mainly in a downward direction.
• blue: when price went down, but LTF Volume was mainly in an upwards direction.
When we split the green "up volume" into "up" and "neutral", the difference is even higher
(here "neutral volume" is colored grey):
(ΔV = -12.76; "up" - "down")
🔶 CONCEPTS
bullishBear = current bar is red but LTF volume is in upward direction -> blue bar
bearishBull = current bar is green but LTF volume is in downward direction -> orange bar
🔹 Potential positioning - forming of Trigger-line
When not in position, the script will wait for a divergence between price and volume direction. When found, a Trigger-line will appear:
• at high when a blue bar appears ( bullishBear ).
• at low when an orange bar appears ( bearishBull ).
Next step is when the Trigger-line is broken by close or high/low (settings: Trigger )
Here, the closing price went under the grey Trigger-line -> bearish position:
🔹 Trailing Stop-line
When the Trigger-line is broken, the Trailing Stop-line (TS-line) will start:
• low when bullish position
• high when bearish position
You can choose (settings -> Trigger -> Close or H/L ) whether close price or high/low should break the Trigger-line
When alerts are enabled ("Any alert() function call"), you'll get the following message:
• ' signal up ' when bullish position
• ' signal down' when bearish position
After that, the TS-line will be adjusted when:
• a blue bullishBear bar appears when in bullish position -> lowest of {low , previous blue bar's high or orange bar's low}
• an orange bearishBull bar appears when in bearish position -> highest of {high, previous blue bar's high or orange bar's low}
When alerts are enabled ("Any alert() function call"), and the TS-line is broken, you'll get the following message:
• ' TS-line broken down ' when out bullish position
• ' TS-line broken up ' when out bearish position
🔹 Reference Point
Default the direction of price will be evaluated by comparing closing price with opening price.
When open and close are the same, you'll get "neutral volume".
You can use "previous close" instead (as in built-in volume indicator) to include gaps.
If close equals open , but close is lower than previous close , it will be regarded as " down volume ",
similar, when close is higher than previous close , it will be regarded as " up volume "
Note, the setting applies for the current timeframe AND Lower timeframe:
Based on: " open " (close - open)
Based on: " previous close " (close - previous close)
🔹 Adjustment
When the TS-line changes, this can be adjusted with a percentage of price , or a multiple of " True Range "
Default (Δ line -> Adjustment - 0)
Δ line -> Adjustment 0.03% (of price)
Δ line -> Mult of TR (10)
🔶 SETTINGS
🔹 LTF: choose your Lower TimeFrame: 1S (seconds), 5S, 10S, 15S, 30S, 1 minute)
🔹 Trigger: Choose the trigger for breaking the Trigger-line ; close or H/L (high when bullish position, low when bearish position)
🔹 Δ line ( Trailing Stop-line ): add/subtract an adjustment when the TS-line changes ( default: Adjustment ):
• Adjustment ( default: 0 ): add/subtract an extra % of price
• Mult of TR : add/subtract a multiple of True Range
🔹 Based on: compare closing price against:
• open
• previous close
🔹 "Neutral-Volume" is considered "Up-Volume" : this setting will dictate whether nV is considered as green 'buy' volume or not.
🔶 CONSIDERATIONS
🔹 The lowest LTF (1S) will give you more detail and will get data close to tick data.
However, a maximum of 100,000 intrabars can be used in calculations .
This means on the daily chart you won't see anything since 1 day ~ 86400 seconds. (just over 1 bar)
-> choose a lower chart timeframe, or choose a higher LTF (5S, 10S, ... 1 minute)
🔹 Always choose a LTF lower than the current chart timeframe.
🔹 Pine Script™ code using this request.security_lower_tf() may calculate differently on historical and real-time bars, leading to repainting .
HILOCLOP AnalysisThe "HILOCLOP Analysis" indicator is designed to analyze price data based on different conditions and provide insights into market trends and patterns. Let's break down its features and understand its potential usefulness in trading:
Sample Length: The indicator allows the user to specify the sample length, which determines the number of bars or periods considered for the analysis. This parameter can be adjusted to capture short-term or long-term trends and patterns in the market.
Raw Up/Down Analysis: The indicator calculates the number of occurrences where the current price values (high, low, open, close) are higher or lower than their previous values. It provides separate counts for each price component. By visualizing these counts on the chart, traders can identify periods of upward or downward movement in the price data.
HICLOP Analysis: The indicator offers a color scheme option called "HICLOP," which determines the color of the plotted results. If the HICLOP analysis is enabled, the plots representing raw up/down counts will have different colors based on whether the current count is higher or lower than the previous count. This color coding helps traders quickly identify changes in price trends.
Unchecking this Box will Show the general trend.
Raw HICLOP Color Scheme
Trend Color Scheme
Analysis Up vs. Down: The indicator provides an option to analyze instances where all four price components (high, low, open, close) are higher or lower than their respective previous values. This analysis helps traders identify periods of strong upward or downward movement in the market.
Analysis High vs. Low: The indicator compares the number of occurrences where the current high is higher than the previous high and the current low is higher than the previous low. It provides insights into whether the market is experiencing higher highs or higher lows, which can help traders determine the strength of an upward or downward trend.
Analysis Open vs. Close: The indicator compares the number of occurrences where the current close is higher than the previous close and the current open is higher than the previous open. This analysis helps traders assess the relationship between opening and closing prices, providing insights into the strength of buying or selling pressure in the market.
The usefulness of the "HILOCLOP Analysis" indicator in trading depends on the specific trading strategy and the trader's preferences. Here are a few potential use cases:
Trend Identification: By analyzing the raw up/down counts and the HICLOP color scheme, traders can identify trends and changes in price momentum. Increasing raw up counts and corresponding color changes to positive values may indicate an upward trend, while increasing raw down counts and negative color changes may suggest a downward trend.
Confirmation of Breakouts: Traders often look for confirmation of breakouts from key levels or chart patterns. The "Analysis Up V Dn" feature can help identify instances where all four price components simultaneously confirm a breakout, indicating a potentially significant move in the market.
Trend Reversals: The "Analysis High V Low" and "Analysis Open V Close" features can provide insights into potential trend reversals. For example, if there are more higher highs than higher lows, it may indicate a weakening trend, potentially signaling a reversal or a correction.
Adaptive Candlestick Pattern Recognition System█ INTRODUCTION
Nearly three years in the making, intermittently worked on in the few spare hours of weekends and time off, this is a passion project I undertook to flesh out my skills as a computer programmer. This script currently recognizes 85 different candlestick patterns ranging from one to five candles in length. It also performs statistical analysis on those patterns to determine prior performance and changes the coloration of those patterns based on that performance. In searching TradingView's script library for scripts similar to this one, I had found a handful. However, when I reviewed the ones which were open source, I did not see many that truly captured the power of PineScrypt or leveraged the way it works to create efficient and reliable code; one of the main driving factors for releasing this 5,000+ line behemoth open sourced.
Please take the time to review this description and source code to utilize this script to its fullest potential.
█ CONCEPTS
This script covers the following topics: Candlestick Theory, Trend Direction, Higher Timeframes, Price Analysis, Statistic Analysis, and Code Design.
Candlestick Theory - This script focuses solely on the concept of Candlestick Theory: arrangements of candlesticks may form certain patterns that can potentially influence the future price action of assets which experience those patterns. A full list of patterns (grouped by pattern length) will be in its own section of this description. This script contains two modes of operation for identifying candlestick patterns, 'CLASSIC' and 'BREAKOUT'.
CLASSIC: In this mode, candlestick patterns will be identified whenever they appear. The user has a wide variety of inputs to manipulate that can change how certain patterns are identified and even enable alerts to notify themselves when these patterns appear. Each pattern selected to appear will have their Profit or Loss (P/L) calculated starting from the first candle open succeeding the pattern to a candle close specified some number of candles ahead. These P/L calculations are then collected for each pattern, and split among partitions of prior price action of the asset the script is currently applied to (more on that in Higher Timeframes ).
BREAKOUT: In this mode, P/L calculations are held off until a breakout direction has been confirmed. The user may specify the number of candles ahead of a pattern's appearance (from one to five) that a pattern has to confirm a breakout in either an upward or downward direction. A breakout is constituted when there is a candle following the appearance of the pattern that closes above/at the highest high of the pattern, or below/at its lowest low. Only then will percent return calculations be performed for the pattern that's been identified, and these percent returns are broken up not only by the partition they had appeared in but also by the breakout direction itself. Patterns which do not breakout in either direction will be ignored, along with having their labels deleted.
In both of these modes, patterns may be overridden. Overrides occur when a smaller pattern has been detected and ends up becoming one (or more) of the candles of a larger pattern. A key example of this would be the Bearish Engulfing and the Three Outside Down patterns. A Three Outside Down necessitates a Bearish Engulfing as the first two candles in it, while the third candle closes lower. When a pattern is overridden, the return for that pattern will no longer be tracked. Overrides will not occur if the tail end of a larger pattern occurs at the beginning of a smaller pattern (Ex: a Bullish Engulfing occurs on the third candle of a Three Outside Down and the candle immediately following that pattern, the Three Outside Down pattern will not be overridden).
Important Functionality Note: These patterns are only searched for at the most recently closed candle, not on the currently closing candle, which creates an offset of one for this script's execution. (SEE LIMITATIONS)
Trend Direction - Many of the patterns require a trend direction prior to their appearance. Noting TradingView's own publication of candlestick patterns, I utilize a similar method for determining trend direction. Moving Averages are used to determine which trend is currently taking place for candlestick patterns to be sought out. The user has access to two Moving Averages which they may individually modify the following for each: Moving Average type (list of 9), their length, width, source values, and all variables associated with two special Moving Averages (Least Squares and Arnaud Legoux).
There are 3 settings for these Moving Averages, the first two switch between the two Moving Averages, and the third uses both. When using individual Moving Averages, the user may select a 'price point' to compare against the Moving Average (default is close). This price point is compared to the Moving Average at the candles prior to the appearance of candle patterns. Meaning: The close compared to the Moving Average two candles behind determines the trend direction used for Candlestick Analysis of one candle patterns; three candles behind for two candle patterns and so on. If the selected price point is above the Moving Average, then the current trend is an 'uptrend', 'downtrend' otherwise.
The third setting using both Moving Averages will compare the lengths of each, and trend direction is determined by the shorter Moving Average compared to the longer one. If the shorter Moving Average is above the longer, then the current trend is an 'uptrend', 'downtrend' otherwise. If the lengths of the Moving Averages are the same, or both Moving Averages are Symmetrical, then MA1 will be used by default. (SEE LIMITATIONS)
Higher Timeframes - This script employs the use of Higher Timeframes with a few request.security calls. The purpose of these calls is strictly for the partitioning of an asset's chart, splitting the returns of patterns into three separate groups. The four inputs in control of this partitioning split the chart based on: A given resolution to grab values from, the length of time in that resolution, and 'Upper' and 'Lower Limits' which split the trading range provided by that length of time in that resolution that forms three separate groups. The default values for these four inputs will partition the current chart by the yearly high-low range where: the 'Upper' partition is the top 20% of that trading range, the 'Middle' partition is 80% to 33% of the trading range, and the 'Lower' partition covers the trading range within 33% of the yearly low.
Patterns which are identified by this script will have their returns grouped together based on which partition they had appeared in. For example, a Bullish Engulfing which occurs within a third of the yearly low will have its return placed separately from a Bullish Engulfing that occurred within 20% of the yearly high. The idea is that certain patterns may perform better or worse depending on when they had occurred during an asset's trading range.
Price Analysis - Price Analysis is a major part of this script's functionality as it can fundamentally change how patterns are shown to the user. The settings related to Price Analysis include setting the number of candles ahead of a pattern's appearance to determine the return of that pattern. In 'BREAKOUT' mode, an additional setting allows the user to specify where the P/L calculation will begin for a pattern that had appeared and confirmed. (SEE LIMITATIONS)
The calculation for percent returns of patterns is illustrated with the following pseudo-code (CLASSIC mode, this is a simplified version of the actual code):
type patternObj
int ID
int partition
type returnsArray
float returns
// No pattern found = na returned
patternObj TEST_VAL = f_FindPattern()
priorTestVal = TEST_VAL
if not na( priorTestVal )
pnlMatrixRow = priorTestVal.ID
pnlMatrixCol = priorTestVal.partition
matrixReturn = matrix.get(PERCENT_RETURNS, pnlMatrixRow, pnlMatrixCol)
percentReturn = ( (close - open ) / open ) * 100%
array.push(matrixReturn.returns, percentReturn)
Statistic Analysis - This script uses Pine's built-in array functions to conduct the Statistic Analysis for patterns. When a pattern is found and its P/L calculation is complete, its return is added to a 'Return Array' User-Defined-Type that contains numerous fields which retain information on a pattern's prior performance. The actual UDT is as follows:
type returnArray
float returns = na
int size = 0
float avg = 0
float median = 0
float stdDev = 0
int polarities = na
All values within this UDT will be updated when a return is added to it (some based on user input). The array.avg , array.median and array.stdev will be ran and saved into their respective fields after a return is placed in the 'returns' array. The 'polarities' integer array is what will be changed based on user input. The user specifies two different percentages that declare 'Positive' and 'Negative' returns for patterns. When a pattern returns above, below, or in between these two values, different indices of this array will be incremented to reflect the kind of return that pattern had just experienced.
These values (plus the full name, partition the pattern occurred in, and a 95% confidence interval of expected returns) will be displayed to the user on the tooltip of the labels that identify patterns. Simply scroll over the pattern label to view each of these values.
Code Design - Overall this script is as much of an art piece as it is functional. Its design features numerous depictions of ASCII Art that illustrate what is being attempted by the functions that identify patterns, and an incalculable amount of time was spent rewriting portions of code to improve its efficiency. Admittedly, this final version is nearly 1,000 lines shorter than a previous version (one which took nearly 30 seconds after compilation to run, and didn't do nearly half of what this version does). The use of UDTs, especially the 'patternObj' one crafted and redesigned from the Hikkake Hunter 2.0 I published last month, played a significant role in making this script run efficiently. There is a slight rigidity in some of this code mainly around pattern IDs which are responsible for displaying the abbreviation for patterns (as well as the full names under the tooltips, and the matrix row position for holding returns), as each is hard-coded to correspond to that pattern.
However, one thing I would like to mention is the extensive use of global variables for pattern detection. Many scripts I had looked over for ideas on how to identify candlestick patterns had the same idea; break the pattern into a set of logical 'true/false' statements derived from historically referencing candle OHLC values. Some scripts which identified upwards of 20 to 30 patterns would reference Pine's built-in OHLC values for each pattern individually, potentially requesting information from TradingView's servers numerous times that could easily be saved into a variable for re-use and only requested once per candle (what this script does).
█ FEATURES
This script features a massive amount of switches, options, floating point values, detection settings, and methods for identifying/tailoring pattern appearances. All modifiable inputs for patterns are grouped together based on the number of candles they contain. Other inputs (like those for statistics settings and coloration) are grouped separately and presented in a way I believe makes the most sense.
Not mentioned above is the coloration settings. One of the aims of this script was to make patterns visually signify their behavior to the user when they are identified. Each pattern has its own collection of returns which are analyzed and compared to the inputs of the user. The user may choose the colors for bullish, neutral, and bearish patterns. They may also choose the minimum number of patterns needed to occur before assigning a color to that pattern based on its behavior; a color for patterns that have not met this minimum number of occurrences yet, and a color for patterns that are still processing in BREAKOUT mode.
There are also an additional three settings which alter the color scheme for patterns: Statistic Point-of-Reference, Adaptive coloring, and Hard Limiting. The Statistic Point-of-Reference decides which value (average or median) will be compared against the 'Negative' and 'Positive Return Tolerance'(s) to guide the coloration of the patterns (or for Adaptive Coloring, the generation of a color gradient).
Adaptive Coloring will have this script produce a gradient that patterns will be colored along. The more bullish or bearish a pattern is, the further along the gradient those patterns will be colored starting from the 'Neutral' color (hard lined at the value of 0%: values above this will be colored bullish, bearish otherwise). When Adaptive Coloring is enabled, this script will request the highest and lowest values (these being the Statistic Point-of-Reference) from the matrix containing all returns and rewrite global variables tied to the negative and positive return tolerances. This means that all patterns identified will be compared with each other to determine bullish/bearishness in Adaptive Coloring.
Hard Limiting will prevent these global variables from being rewritten, so patterns whose Statistic Point-of-Reference exceed the return tolerances will be fully colored the bullish or bearish colors instead of a generated gradient color. (SEE LIMITATIONS)
Apart from the Candle Detection Modes (CLASSIC and BREAKOUT), there's an additional two inputs which modify how this script behaves grouped under a "MASTER DETECTION SETTINGS" tab. These two "Pattern Detection Settings" are 'SWITCHBOARD' and 'TARGET MODE'.
SWITCHBOARD: Every single pattern has a switch that is associated with its detection. When a switch is enabled, the code which searches for that pattern will be run. With the Pattern Detection Setting set to this, all patterns that have their switches enabled will be sought out and shown.
TARGET MODE: There is an additional setting which operates on top of 'SWITCHBOARD' that singles out an individual pattern the user specifies through a drop down list. The names of every pattern recognized by this script will be present along with an identifier that shows the number of candles in that pattern (Ex: " (# candles)"). All patterns enabled in the switchboard will still have their returns measured, but only the pattern selected from the "Target Pattern" list will be shown. (SEE LIMITATIONS)
The vast majority of other features are held in the one, two, and three candle pattern sections.
For one-candle patterns, there are:
3 — Settings related to defining 'Tall' candles:
The number of candles to sample for previous candle-size averages.
The type of comparison done for 'Tall' Candles: Settings are 'RANGE' and 'BODY'.
The 'Tolerance' for tall candles, specifying what percent of the 'average' size candles must exceed to be considered 'Tall'.
When 'Tall Candle Setting' is set to RANGE, the high-low ranges are what the current candle range will be compared against to determine if a candle is 'Tall'. Otherwise the candle bodies (absolute value of the close - open) will be compared instead. (SEE LIMITATIONS)
Hammer Tolerance - How large a 'discarded wick' may be before it disqualifies a candle from being a 'Hammer'.
Discarded wicks are compared to the size of the Hammer's candle body and are dependent upon the body's center position. Hammer bodies closer to the high of the candle will have the upper wick used as its 'discarded wick', otherwise the lower wick is used.
9 — Doji Settings, some pulled from an old Doji Hunter I made a while back:
Doji Tolerance - How large the body of a candle may be compared to the range to be considered a 'Doji'.
Ignore N/S Dojis - Turns off Trend Direction for non-special Dojis.
GS/DF Doji Settings - 2 Inputs that enable and specify how large wicks that typically disqualify Dojis from being 'Gravestone' or 'Dragonfly' Dojis may be.
4 Settings related to 'Long Wick Doji' candles detailed below.
A Tolerance for 'Rickshaw Man' Dojis specifying how close the center of the body must be to the range to be valid.
The 4 settings the user may modify for 'Long Legged' Dojis are: A Sample Base for determining the previous average of wicks, a Sample Length specifying how far back to look for these averages, a Behavior Setting to define how 'Long Legged' Dojis are recognized, and a tolerance to specify how large in comparison to the prior wicks a Doji's wicks must be to be considered 'Long Legged'.
The 'Sample Base' list has two settings:
RANGE: The wicks of prior candles are compared to their candle ranges and the 'wick averages' will be what the average percent of ranges were in the sample.
WICKS: The size of the wicks themselves are averaged and returned for comparing against the current wicks of a Doji.
The 'Behavior' list has three settings:
ONE: Only one wick length needs to exceed the average by the tolerance for a Doji to be considered 'Long Legged'.
BOTH: Both wick lengths need to exceed the average of the tolerance of their respective wicks (upper wicks are compared to upper wicks, lower wicks compared to lower) to be considered 'Long Legged'.
AVG: Both wicks and the averages of the previous wicks are added together, divided by two, and compared. If the 'average' of the current wicks exceeds this combined average of prior wicks by the tolerance, then this would constitute a valid 'Long Legged' Doji. (For Dojis in general - SEE LIMITATIONS)
The final input is one related to candle patterns which require a Marubozu candle in them. The two settings for this input are 'INCLUSIVE' and 'EXCLUSIVE'. If INCLUSIVE is selected, any opening/closing variant of Marubozu candles will be allowed in the patterns that require them.
For two-candle patterns, there are:
2 — Settings which define 'Engulfing' parameters:
Engulfing Setting - Two options, RANGE or BODY which sets up how one candle may 'engulf' the previous.
Inclusive Engulfing - Boolean which enables if 'engulfing' candles can be equal to the values needed to 'engulf' the prior candle.
For the 'Engulfing Setting':
RANGE: If the second candle's high-low range completely covers the high-low range of the prior candle, this is recognized as 'engulfing'.
BODY: If the second candle's open-close completely covers the open-close of the previous candle, this is recognized as 'engulfing'. (SEE LIMITATIONS)
4 — Booleans specifying different settings for a few patterns:
One which allows for 'opens within body' patterns to let the second candle's open/close values match the prior candles' open/close.
One which forces 'Kicking' patterns to have a gap if the Marubozu setting is set to 'INCLUSIVE'.
And Two which dictate if the individual candles in 'Stomach' patterns need to be 'Tall'.
8 — Floating point values which affect 11 different patterns:
One which determines the distance the close of the first candle in a 'Hammer Inverted' pattern must be to the low to be considered valid.
One which affects how close the opens/closes need to be for all 'Lines' patterns (Bull/Bear Meeting/Separating Lines).
One that allows some leeway with the 'Matching Low' pattern (gives a small range the second candle close may be within instead of needing to match the previous close).
Three tolerances for On Neck/In Neck patterns (2 and 1 respectively).
A tolerance for the Thrusting pattern which give a range the close the second candle may be between the midpoint and close of the first to be considered 'valid'.
A tolerance for the two Tweezers patterns that specifies how close the highs and lows of the patterns need to be to each other to be 'valid'.
The first On Neck tolerance specifies how large the lower wick of the first candle may be (as a % of that candle's range) before the pattern is invalidated. The second tolerance specifies how far up the lower wick to the close the second candle's close may be for this pattern. The third tolerance for the In Neck pattern determines how far into the body of the first candle the second may close to be 'valid'.
For the remaining patterns (3, 4, and 5 candles), there are:
3 — Settings for the Deliberation pattern:
A boolean which forces the open of the third candle to gap above the close of the second.
A tolerance which changes the proximity of the third candle's open to the second candle's close in this pattern.
A tolerance that sets the maximum size the third candle may be compared to the average of the first two candles.
One boolean value for the Two Crows patterns (standard and Upside Gapping) that forces the first two candles in the patterns to completely gap if disabled (candle 1's close < candle 2's low).
10 — Floating point values for the remaining patterns:
One tolerance for defining how much the size of each candle in the Identical Black Crows pattern may deviate from the average of themselves to be considered valid.
One tolerance for setting how close the opens/closes of certain three candle patterns may be to each other's opens/closes.*
Three floating point values that affect the Three Stars in the South pattern.
One tolerance for the Side-by-Side patterns - looks at the second and third candle closes.
One tolerance for the Stick Sandwich pattern - looks at the first and third candle closes.
A floating value that sizes the Concealing Baby Swallow pattern's 3rd candle wick.
Two values for the Ladder Bottom pattern which define a range that the third candle's wick size may be.
* This affects the Three Black Crows (non-identical) and Three White Soldiers patterns, each require the opens and closes of every candle to be near each other.
The first tolerance of the Three Stars in the South pattern affects the first candle body's center position, and defines where it must be above to be considered valid. The second tolerance specifies how close the second candle must be to this same position, as well as the deviation the ratio the candle body to its range may be in comparison to the first candle. The third restricts how large the second candle range may be in comparison to the first (prevents this pattern from being recognized if the second candle is similar to the first but larger).
The last two floating point values define upper and lower limits to the wick size of a Ladder Bottom's fourth candle to be considered valid.
█ HOW TO USE
While there are many moving parts to this script, I attempted to set the default values with what I believed may help identify the most patterns within reasonable definitions. When this script is applied to a chart, the Candle Detection Mode (along with the BREAKOUT settings) and all candle switches must be confirmed before patterns are displayed. All switches are on by default, so this gives the user an opportunity to pick which patterns to identify first before playing around in the settings.
All of the settings/inputs described above are meant for experimentation. I encourage the user to tweak these values at will to find which set ups work best for whichever charts they decide to apply these patterns to.
Refer to the patterns themselves during experimentation. The statistic information provided on the tooltips of the patterns are meant to help guide input decisions. The breadth of candlestick theory is deep, and this was an attempt at capturing what I could in its sea of information.
█ LIMITATIONS
DISCLAIMER: While it may seem a bit paradoxical that this script aims to use past performance to potentially measure future results, past performance is not indicative of future results . Markets are highly adaptive and often unpredictable. This script is meant as an informational tool to show how patterns may behave. There is no guarantee that confidence intervals (or any other metric measured with this script) are accurate to the performance of patterns; caution must be exercised with all patterns identified regardless of how much information regarding prior performance is available.
Candlestick Theory - In the name, Candlestick Theory is a theory , and all theories come with their own limits. Some patterns identified by this script may be completely useless/unprofitable/unpredictable regardless of whatever combination of settings are used to identify them. However, if I truly believed this theory had no merit, this script would not exist. It is important to understand that this is a tool meant to be utilized with an array of others to procure positive (or negative, looking at you, short sellers ) results when navigating the complex world of finance.
To address the functionality note however, this script has an offset of 1 by default. Patterns will not be identified on the currently closing candle, only on the candle which has most recently closed. Attempting to have this script do both (offset by one or identify on close) lead to more trouble than it was worth. I personally just want users to be aware that patterns will not be identified immediately when they appear.
Trend Direction - Moving Averages - There is a small quirk with how MA settings will be adjusted if the user inputs two moving averages of the same length when the "MA Setting" is set to 'BOTH'. If Moving Averages have the same length, this script will default to only using MA 1 regardless of if the types of Moving Averages are different . I will experiment in the future to alleviate/reduce this restriction.
Price Analysis - BREAKOUT mode - With how identifying patterns with a look-ahead confirmation works, the percent returns for patterns that break out in either direction will be calculated on the same candle regardless of if P/L Offset is set to 'FROM CONFIRMATION' or 'FROM APPEARANCE'. This same issue is present in the Hikkake Hunter script mentioned earlier. This does not mean the P/L calculations are incorrect , the offset for the calculation is set by the number of candles required to confirm the pattern if 'FROM APPEARANCE' is selected. It just means that these two different P/L calculations will complete at the same time independent of the setting that's been selected.
Adaptive Coloring/Hard Limiting - Hard Limiting is only used with Adaptive Coloring and has no effect outside of it. If Hard Limiting is used, it is recommended to increase the 'Positive' and 'Negative' return tolerance values as a pattern's bullish/bearishness may be disproportionately represented with the gradient generated under a hard limit.
TARGET MODE - This mode will break rules regarding patterns that are overridden on purpose. If a pattern selected in TARGET mode would have otherwise been absorbed by a larger pattern, it will have that pattern's percent return calculated; potentially leading to duplicate returns being included in the matrix of all returns recognized by this script.
'Tall' Candle Setting - This is a wide-reaching setting, as approximately 30 different patterns or so rely on defining 'Tall' candles. Changing how 'Tall' candles are defined whether by the tolerance value those candles need to exceed or by the values of the candle used for the baseline comparison (RANGE/BODY) can wildly affect how this script functions under certain conditions. Refer to the tooltip of these settings for more information on which specific patterns are affected by this.
Doji Settings - There are roughly 10 or so two to three candle patterns which have Dojis as a part of them. If all Dojis are disabled, it will prevent some of these larger patterns from being recognized. This is a dependency issue that I may address in the future.
'Engulfing' Setting - Functionally, the two 'Engulfing' settings are quite different. Because of this, the 'RANGE' setting may cause certain patterns that would otherwise be valid under textbook and online references/definitions to not be recognized as such (like the Upside Gap Two Crows or Three Outside down).
█ PATTERN LIST
This script recognizes 85 patterns upon initial release. I am open to adding additional patterns to it in the future and any comments/suggestions are appreciated. It recognizes:
15 — 1 Candle Patterns
4 Hammer type patterns: Regular Hammer, Takuri Line, Shooting Star, and Hanging Man
9 Doji Candles: Regular Dojis, Northern/Southern Dojis, Gravestone/Dragonfly Dojis, Gapping Up/Down Dojis, and Long-Legged/Rickshaw Man Dojis
White/Black Long Days
32 — 2 Candle Patterns
4 Engulfing type patterns: Bullish/Bearish Engulfing and Last Engulfing Top/Bottom
Dark Cloud Cover
Bullish/Bearish Doji Star patterns
Hammer Inverted
Bullish/Bearish Haramis + Cross variants
Homing Pigeon
Bullish/Bearish Kicking
4 Lines type patterns: Bullish/Bearish Meeting/Separating Lines
Matching Low
On/In Neck patterns
Piercing pattern
Shooting Star (2 Lines)
Above/Below Stomach patterns
Thrusting
Tweezers Top/Bottom patterns
Two Black Gapping
Rising/Falling Window patterns
29 — 3 Candle Patterns
Bullish/Bearish Abandoned Baby patterns
Advance Block
Collapsing Doji Star
Deliberation
Upside/Downside Gap Three Methods patterns
Three Inside/Outside Up/Down patterns (4 total)
Bullish/Bearish Side-by-Side patterns
Morning/Evening Star patterns + Doji variants
Stick Sandwich
Downside/Upside Tasuki Gap patterns
Three Black Crows + Identical variation
Three White Soldiers
Three Stars in the South
Bullish/Bearish Tri-Star patterns
Two Crows + Upside Gap variant
Unique Three River Bottom
3 — 4 Candle Patterns
Concealing Baby Swallow
Bullish/Bearish Three Line Strike patterns
6 — 5 Candle Patterns
Bullish/Bearish Breakaway patterns
Ladder Bottom
Mat Hold
Rising/Falling Three Methods patterns
█ WORKS CITED
Because of the amount of time needed to complete this script, I am unable to provide exact dates for when some of these references were used. I will also not provide every single reference, as citing a reference for each individual pattern and the place it was reviewed would lead to a bibliography larger than this script and its description combined. There were five major resources I used when building this script, one book, two websites (for various different reasons including patterns, moving averages, and various other articles of information), various scripts from TradingView's public library (including TradingView's own source code for *all* candle patterns ), and PineScrypt's reference manual.
Bulkowski, Thomas N. Encyclopedia of Candlestick Patterns . Hoboken, New Jersey: John Wiley & Sons Inc., 2008. E-book (google books).
Various. Numerous webpages. CandleScanner . 2023. online. Accessed 2020 - 2023.
Various. Numerous webpages. Investopedia . 2023. online. Accessed 2020 - 2023.
█ AKNOWLEDGEMENTS
I want to take the time here to thank all of my friends and family, both online and in real life, for the support they've given me over the last few years in this endeavor. My pets who tried their hardest to keep me from completing it. And work for the grit to continue pushing through until this script's completion.
This belongs to me just as much as it does anyone else. Whether you are an institutional trader, gold bug hedging against the dollar, retail ape who got in on a squeeze, or just parents trying to grow their retirement/save for the kids. This belongs to everyone.
Private Beta for new features to be tested can be found here .
Vires In Numeris
Keltner Center Of Gravity Channel ( KeltCOG )I have the ambition to create a ‘landscape’ which enables the user to see the ‘mood’ of the market about the price of an instrument, simply by looking where the candles go. Prices are a simple phenomenon , they go up or down or stay the same. This is represented quite well for the short term by a candle. I recommend to study candle patterns. Prices not only fluctuate but also trend up, down or go sideways. The user should analyze this by determining the COG (Center Of Gravity) and the ‘normal’ current range by using the historical data in a lookback period.
As a COG the center line of a Donchian Channel is often used. I.m.o. a COG should be a zone, in this channel I use the gray zone of my Donchian Fibonacci Channel, The ‘normal’ range is a multiple of Average True Range, as used in a Keltner Channel. Combining the two can give a cumbersome result, as one can see in my Keltner Fibonacci Channel. In this KeltCOG channel I solved this by not using all Fibonacci levels and by making the Keltner lines strictly parallel to the nearest COG line. To do this, I use the fact that the COG lines have horizontal stretches, there I make the Keltner lines horizontal too. Only where the COG lines change value, the Keltner lines are recalculated. This way the channel gets a very regular shape with three clear zones.
Interpretation of a chart by using the KeltCOG channel.
Overbought: If the candles go higher then the blue zone, the market is hyper enthusiast, creating an overbought situation. This is often followed by a reversion to the COG.
Uptrend: If the candles form in the blue zone, the market is enthusiast and willing to pay more.
Hopeful: If the candles form in or near the upper uncolored zone, the market is hopeful and is thinking about paying more. Sometimes prices go a little up.
Content: If the candles form in the gray zone, which represents COG, the market is happy with the current prices, so these move sideways
Disappointed: If the candles form in or near the lower uncolored zone, the market is disappointed and contemplates paying less, sometimes prices go a little down.
Downtrend: If the candles form in red zone, the market doesn’t like the instrument at all, rejects the current price and is only prepared to pay less.
Oversold: If the candles form below the red zone, the market overdoes its disgust, creating an oversold situation, often followed by a reversion to the COG.
Multi-Timeframe Trend Table📊 Multi-Timeframe Trend Table
Overview
This powerful trend-tracking tool gives you a real-time snapshot of market trends across multiple timeframes — all in one compact and color-coded table. Designed for traders who want fast, clean, and multi-timeframe awareness at a glance.
⸻
✅ Features
• 7 Key Timeframes Monitored:
2min · 5min · 15min · 1h · 4h · 1d · 1w
• Trend Detection Based on EMAs
Uses a fast (default 20) and slow (default 200) EMA to determine if a timeframe is trending:
• 🟢 Uptrend: Fast EMA is above slow EMA
• 🔴 Downtrend: Slow EMA is above fast EMA
• 🟠 Sideways: EMAs are close (configurable threshold)
• Raw EMA Distance
See the actual difference between fast and slow EMAs for each timeframe — great for gauging trend strength.
• EMA Slope Analysis
A unique “Slope” column tells you the current behavior of EMAs:
• 📈 Pointing Up
• 📉 Pointing Down
• 🔄 Crossing Up/Down
• ➡️ Lateral
• Instant Alerts
Alerts fire the moment a trend flips on any timeframe, keeping you ahead of market shifts.
• Optional Chart EMAs
Toggle on/off the fast and slow EMAs on your active chart for extra clarity.
⸻
🧠 Use Case Examples
• Confirm trades with alignment across multiple timeframes
• Spot early trend reversals with crossing behavior
• Add a higher-timeframe filter to your scalping system
• Monitor key EMAs without changing your chart timeframe
⸻
⚙️ Configuration
• EMA lengths and sideways threshold are fully adjustable
• Enable/disable chart overlays for EMAs
• Table dynamically updates in real time
⸻
💡 Pro Tip: Use this indicator alongside your entry strategy to only trade in the direction of the dominant trends.
⸻
Half Cup [LuxAlgo]The Half Cup indicator detects and displays patterns with the shape of a Half Cup , initiating a channel. From this channel, breakouts are detected and highlighted with dots.
Users can control the shape of the Half Cup and the channel length through various settings.
Do note that the displayed half cups are displayed retrospectively, making them subject to backpainting.
🔶 USAGE
The idea behind the indicator is derived from the Cup & Handle pattern, which requires waiting for the pattern full completion.
Our Half Cup publication aims to find opportunities when the potential cup is only formed halfway.
In this example, a green dot shows the first breakout of the upper channel extremity. A few bars later, the price went under it, after which it returned above, triggering a second green dot. Both triggers were good opportunities in this case, and the price rose afterward.
The Half Cup pattern can be the start of a potential complete Cup & Handle (As in the example above, a complete Cup pattern (without the Handle ) is shown, manually drawn with dashed lines).
Every green/red dot, whether on a bullish or bearish pattern, points to a breakout respectively above/below the channel.
Besides drawing patterns and the corresponding breakouts, the Half Cup indicator can also provide insights into trends and potential opportunities in the long run.
🔶 DETAILS
🔹 Validation
Several criteria must be fulfilled before a visible pattern on the chart is drawn.
Calculations are done beforehand to know where the Half Cup pattern would be positioned.
The pattern's bottom and top edges are checked for the number of bars whose closing price is outside the half-cup area. When the number of breakouts above/below is equal to or lower than the user-defined settings ( Max % Breaks Top/Bottom ), the pattern is drawn together with a brighter-colored channel next to it.
Dots highlighting the channel's breakout can be drawn from that moment until the end of both channel lines.
🔹 Positioning
Users can adjust the following settings to fit their needs:
% Broadness: Moves the Top/Bottom line (bullish or bearish) diagonally upwards/downwards.
Vertical Shift: Shifts the entire pattern up/down.
Channel Length: Sets the line length of the channel.
Note that adjusting the position of the pattern will change the validation; the script will be rerun to check if patterns are still valid or if new patterns can be drawn. Some patterns may disappear, while new ones may appear.
Before adjusting the position, the user can set Max % Breaks Top/Bottom at 100%. When the positioning is set, Max % Breaks Top/Bottom can be set as desired.
🔹 Updated Drawings
The Half Cup pattern is always drawn retrospectively (that is it is subject to backpainting), the channel is drawn from the bar from where the pattern is detected. Every breakout of the channel will remain visible as dots.
When a new swing high/low is found while the previous swing low/high remains the same, the pattern is updated to minimize clutter. The dots of earlier drawings will remain visible (to ensure no repainting occurs), but the color becomes faded, as such bright dots are associated with patterns that are visible on the chart, while faded dots are from removed/updated patterns.
🔶 SETTINGS
Swing Length: Period used for the swing detection, with higher values returning longer-term Swing Levels.
🔹 Validation
Max % Breaks Bottom: Allowed maximum amount of bars where the closing price is below the bottom of the Half Cup pattern against the total width of the pattern (bars).
Max % Breaks Top: Allowed maximum amount of bars where the closing price is above the top of the Half Cup pattern against the total width of the pattern (bars).
🔹 Positioning
% Broadness: Moves the Top/Bottom line (bullish or bearish) diagonally upwards/downwards.
Vertical Shift: Shifts the entire pattern up/down.
Channel Length: Sets the line length of the channel.
Broad market index / quantifytools- Overview
Broad market index is a market breadth based oscillator, depicting broad market trend by analysing ratio between symbols moving up and symbols moving down in a given market. When market breadth is positive, more symbols are going up and when negative, more symbols are going down. As markets tend to correlate, broad market trend dictates likely path for all individual symbols that make up the market.
This tool provides market breadth for US equities (based on NYSE advancers - decliners) and ability to build two custom breadth baskets with up to 39 symbols included in each. Market breadth can be customized with variety of smoothing options, weighting and threshold modes to find most optimal rules for trend following. Performance of the model is reflected on metrics showing percentage of up/down moves during bullish/bearish states.
Example
↑ 63% = 63% of price moves during positive breadth state are to the upside
↓ 59% = 59% of price moves during negative breadth state are to the downside
Breadth state is colorized on line and chart according to its state (negative/positive/equilibrium) and direction (trending up/down). Upper and lower bands depict historical turning points in breadth for identifying extremes in broad market trend. Triangles mark breadth thrusts, in other words abnormally large moves in breadth at either upper or lower extreme. Breadth thrusts can serve as early signs of broad market trend reverting.
- Concept and features
By default, market breadth is calculated based on NYSE advancers - decliners, usable for all major indices that depict broad markets in US equities (SP500, QQQ, IWM). Users can also build 2 custom breadth baskets consisting of up to 39 symbols for defining broad market on other asset classes, such as cryptocurrencies. Custom baskets are suitable for any chart that fairly represents a market as a whole.
Example
Basket consisting of cryptocurrencies = Use on CRYPTOCAP:TOTAL (all cryptocurrencies aggregated)
Basket consisting of healthcare stocks = Use on AMEX:XLV (healthcare sector ETF)
Breadth line can be further refined using various smoothing options (SMA, EMA, HMA, RMA, WMA), threshold method and weights. By default, threshold (dividing line between bullish and bearish states) is set to fixed at 0, depicting an equilibrium where equal amount of symbols are going up and down.
Threshold mode can also be set to Dynamic, switching threshold to a moving average of the breadth line. Fundamental functionality still remains, breadth line above threshold marks bullish state and below threshold marks bearish state. Difference here is that the threshold no longer depicts a point of equilibrium, but simply a smoothed version of the breadth line itself, which can catch turns in broad market trend earlier.
Breadth basket can be adjusted to volatility of the viewed chart, causing an overstating of breadth on high volatility and understating on low volatility. Weighting takes into account magnitude of up/down moves, which can provide better relevance for trend following purposes.
- Practical guide
Example #1 : Broad market trend
The utility of market breadth is based on the idea that markets correlate and individual symbols making up the market will eventually join the broad market trend. With this in mind, going against broad market is like swimming upstream, it's going to be the hard way. A well performing basket with clear skew for upside and downside on respective breadth states can be used to form directional bias for trades and risk on/off regimes for investing.
Example #2 : Broad market reversals
Thrusts signify two things: a historical extreme in breadth and an aggressive move to the opposite direction. Thrusts are valuable clues for exhaustion in broad market trend, potentially leading to a reversal.
Example #3 : Breadth/price divergences
Market breadth and price diverging signify events where most symbols that make up the market are going one way but a few high weight symbols (big tech for SP500) are going the other way. In other words, only a few symbols are moving the market while general interest and intention is to the other direction. Divergences in breadth and price are not ideal for sustainable trend and can be expected to eventually revert to the direction of broad market.
Auto Chart Patterns [Trendoscope®]🎲 Introducing our most comprehensive automatic chart pattern recognition indicator.
Last week, we published an idea on how to algorithmically identify and classify chart patterns.
This indicator is nothing but the initial implementation of the idea. Whatever we explained in that publication that users can do manually to identify and classify the pattern, this indicator will do it for them.
🎲 Process of identifying the patterns.
The bulk of the logic is implemented as part of the library - chartpatterns . The indicator is a shell that captures the user inputs and makes use of the library to deliver the outcome.
🎯 Here is the list of steps executed to identify the patterns on the chart.
Derive multi level recursive zigzag for multiple base zigzag length and depth combinations.
For each zigzag and level, check the last 5 pivots or 6 pivots (based on the input setting) for possibility of valid trend line pairs.
If there is a valid trend line pair, then there is pattern.
🎯 Rules for identifying the valid trend line pairs
There should be at least two trend lines that does not intersect between the starting and ending pivots.
The upper trend line should touch all the pivot highs of the last 5 or 6 pivots considered for scanning the patterns
The lower trend line should touch all the pivot lows of the last 5 or 6 pivots considered for scanning the patterns.
None of the candles from starting pivot to ending pivot should fall outside the trend lines (above upper trend line and below lower trend line)
The existence of a valid trend line pair signifies the existence of pattern. What type of pattern it is, to identify that we need to go through the classification rules.
🎲 Process of classification of the patterns.
We need to gather the following information before we classify the pattern.
Direction of upper trend line - rising, falling or flat
Direction of lower trend line - rising, falling or flat
Characteristics of trend line pair - converging, expanding, parallel
🎯 Broader Classifications
Broader classification would include the following types.
🚩 Classification Based on Geometrical Shapes
This includes
Wedges - both trend lines are moving in the same direction. But, the trend lines are either converging or diverging and not parallel to each other.
Triangles - trend lines are moving in different directions. Naturally, they are either converging or diverging.
Channels - Both trend lines are moving in the same direction, and they are parallel to each other within the limits of error.
🚩 Classification Based on Pattern Direction
This includes
Ascending/Rising Patterns - No trend line is moving in the downward direction and at least one trend line is moving upwards
Descending/Falling Patterns - No trend line is moving in the upward direction, and at least one trend line is moving downwards.
Flat - Both Trend Lines are Flat
Bi-Directional - Both trend lines are moving in opposite direction and none of them is flat.
🚩 Classification Based on Formation Dynamics
This includes
Converging Patterns - Trend Lines are converging towards each other
Diverging Patterns - Trend Lines are diverging from each other
Parallel Patterns - Trend Lines are parallel to each others
🎯 Individual Pattern Types
Now we have broader classifications. Let's go through in detail to find out fine-grained classification of each individual patterns.
🚩 Ascending/Uptrend Channel
This pattern belongs to the broader classifications - Ascending Patterns, Parallel Patterns and Channels. The rules for the Ascending/Uptrend Channel pattern are as below
Both trend lines are rising
Trend lines are parallel to each other
🚩 Descending/Downtrend Channel
This pattern belongs to the broader classifications - Descending Patterns, Parallel Patterns and Channels. The rules for the Descending/Downtrend Channel pattern are as below
Both trend lines are falling
Trend lines are parallel to each other
🚩 Ranging Channel
This pattern belongs to the broader classifications - Flat Patterns, Parallel Patterns and Channels. The rules for the Ranging Channel pattern are as below
Both trend lines are flat
Trend lines are parallel to each other
🚩 Rising Wedge - Expanding
This pattern belongs to the broader classifications - Rising Patterns, Diverging Patterns and Wedges. The rules for the Expanding Rising Wedge pattern are as below
Both trend lines are rising
Trend Lines are diverging.
🚩 Rising Wedge - Contracting
This pattern belongs to the broader classifications - Rising Patterns, Converging Patterns and Wedges. The rules for the Contracting Rising Wedge pattern are as below
Both trend lines are rising
Trend Lines are converging.
🚩 Falling Wedge - Expanding
This pattern belongs to the broader classifications - Falling Patterns, Diverging Patterns and Wedges. The rules for the Expanding Falling Wedge pattern are as below
Both trend lines are falling
Trend Lines are diverging.
🚩 Falling Wedge - Contracting
This pattern belongs to the broader classifications - Falling Patterns, Converging Patterns and Wedges. The rules for the Converging Falling Wedge are as below
Both trend lines are falling
Trend Lines are converging.
🚩 Rising/Ascending Triangle - Expanding
This pattern belongs to the broader classifications - Rising Patterns, Diverging Patterns and Triangles. The rules for the Expanding Ascending Triangle pattern are as below
The upper trend line is rising
The lower trend line is flat
Naturally, the trend lines are diverging from each other
🚩 Rising/Ascending Triangle - Contracting
This pattern belongs to the broader classifications - Rising Patterns, Converging Patterns and Triangles. The rules for the Contracting Ascending Triangle pattern are as below
The upper trend line is flat
The lower trend line is rising
Naturally, the trend lines are converging.
🚩 Falling/Descending Triangle - Expanding
This pattern belongs to the broader classifications - Falling Patterns, Diverging Patterns and Triangles. The rules for the Expanding Descending Triangle pattern are as below
The upper trend line is flat
The lower trend line is falling
Naturally, the trend lines are diverging from each other
🚩 Falling/Descending Triangle - Contracting
This pattern belongs to the broader classifications - Falling Patterns, Converging Patterns and Triangles. The rules for the Contracting Descending Triangle pattern are as below
The upper trend line is falling
The lower trend line is flat
Naturally, the trend lines are converging.
🚩 Converging Triangle
This pattern belongs to the broader classifications - Bi-Directional Patterns, Converging Patterns and Triangles. The rules for the Converging Triangle pattern are as below
The upper trend line is falling
The lower trend line is rising
Naturally, the trend lines are converging.
🚩 Diverging Triangle
This pattern belongs to the broader classifications - Bi-Directional Patterns, Diverging Patterns and Triangles. The rules for the Diverging Triangle pattern are as below
The upper trend line is rising
The lower trend line is falling
Naturally, the trend lines are diverging from each other.
🎲 Indicator Settings - Auto Chart Patterns
🎯 Zigzag Settings
Zigzag settings allow users to select the number of zigzag combinations to be used for pattern scanning, and also allows users to set zigzag length and depth combinations.
🎯 Scanning Settings
Number of Pivots - This can be either 5 or 6. Represents the number of pivots used for identification of patterns.
Error Threshold - Error threshold used for initial trend line validation.
Flat Threshold - Flat angle threshold is used to identify the slope and direction of trend lines.
Last Pivot Direction - Filters patterns based on the last pivot direction. The values can be up, down, both, or custom. When custom is selected, then the individual pattern specific last pivot direction setting is used instead of the generic one.
Verify Bar Ratio - Provides option to ignore extreme patterns where the ratios of zigzag lines are not proportionate to each other.
Avoid Overlap - When selected, the patterns that overlap with existing patterns will be ignored while scanning. Meaning, if the new pattern starting point falls between the start and end of an existing pattern, it will be ignored.
🎯 Group Classification Filters
Allows users to enable disable patterns based on group classifications.
🚩 Geometric Shapes Based Classifications
Wedges - Rising Wedge Expanding, Falling Wedge Expanding, Rising Wedge Contracting, Falling Wedge Contracting.
Channels - Ascending Channel, Descending Channel, Ranging Channel
Triangles - Converging Triangle, Diverging Triangle, Ascending Triangle Expanding, Descending Triangle Expanding, Ascending Triangle Contrcting and Descending Triangle Contracting
🚩 Direction Based Classifications
Rising - Rising Wedge Contracting, Rising Wedge Expanding, Ascending Triangle Contracting, Ascending Triangle Expanding and Ascending Channel
Falling - Falling Wedge Contracting, Falling Wedge Expanding, Descending Triangle Contracting, Descending Triangle Expanding and Descending Channel
Flat/Bi-directional - Ranging Channel, Converging Triangle, Diverging Triangle
🚩 Formation Dynamics Based Classifications
Expanding - Rising Wedge Expanding, Falling Wedge Expanding, Ascending Triangle Expanding, Descending Triangle Expanding, Diverging Triangle
Contracting - Rising Wedge Contracting, Falling Wedge Contracting, Ascending Triangle Contracting, Descending Triangle Contracting, Converging Triangle
Parallel - Ascending Channel, Descending Channgel and Ranging Channel
🎯 Individual Pattern Filters
These settings allow users to enable/disable individual patterns and also set last pivot direction filter individually for each pattern. Individual Last Pivot direction filters are only considered if the main "Last Pivot Direction" filter is set to "custom"
🎯 Display Settings
These are the settings that determine the indicator display. The details are provided in the tooltips and are self explanatory.
🎯 Alerts
A basic alert message is enabled upon detection of new pattern on the chart.
Multi-Timeframe EMA Tracker by Ox_kaliThis script is an advanced trend analysis indicator crafted for traders who seek a detailed and customizable view of market trends across multiple timeframes. This tool utilizes exponential moving averages (EMAs) to offer insights into market direction and momentum.
Key Features:
Multi-Timeframe Analysis: MTEMA-Tracker covers a wide range of timeframes, including 1, 2, 3, 5, 10, 15, 30 minutes; 1, 2, 4, 6, 12 hours; 1 day; and 1 week. This allows traders to analyze market trends from various perspectives, from short-term fluctuations to longer-term movements.
EMA-Based Trend Determination: The indicator employs two EMAs (50 and 200 periods) for each timeframe to ascertain the market trend. A higher EMA50 compared to EMA200 indicates an uptrend, while the opposite scenario suggests a downtrend.
User-Defined Trend Colors: Traders can personalize the appearance of the trend lines with custom colors for upward and downward trends, enhancing visual clarity and quick interpretation.
Selectable Timeframe Display: MTEMA-Tracker by Ox_kali offers the flexibility to choose which timeframes to display, enabling traders to focus on the most relevant data for their trading strategy.
Average Trend Calculation: A unique feature of MTEMA-Tracker is its ability to compute the average trend across all selected timeframes, providing a holistic view of the market's general direction.
List of Parameters:
Color of the trend: Customizable color settings for both upward and downward trends.
Settings for the Lengths of the EMAs: Options to set the lengths of the short and long-term EMAs.
Display Options for Each Timeframe's EMA Trend: Ability to activate or deactivate the display of EMAs for each selected timeframe.
Indicators and Financial Name Label settings: To ensure maximum clarity and understanding of the displayed trends, users should not hesitate to use the function to display "indicators and financial name labels" in their settings. This feature will help in identifying the legends for each trend, making it easier to interpret the market direction for the selected timeframes.
Please note that the MTEMA-Tracker is not a guarantee of future market performance and should be used in conjunction with proper risk management. Always ensure that you have a thorough understanding of the indicator’s methodology and its limitations before making any investment decisions. Additionally, past performance is not indicative of future results.
RSI Trend Detector PSAR BasedRSI Trend Detector is based on the Direction of PSAR. This indicator helps the easy detection of Trend Direction and Sideways Movement of Price. It was difficult to determine the RSI Trend Direction in a basic RSI indicator. one cannot decide the exact entry point where to enter.
RSI Trend Detector helps with the direction of trend using PSAR direction which is almost instant direction changing indicator with Zero Lag. The color of the RSI changes immediately based on PSAR direction. One can determine the trend whether its in UP / Down or Sideways.
One can easily detect Pullback and entry points using this indicator.
The basic working can be interpreted with a normal default RSI, The only additional feature is the direction of trend using a SAR signal.
Oversold Zone is below 30
Overbought Zone is above 70
how ever RSI above 50 is treated a UP trend and Below 50 as Down Trend.
when RSI is between 40 and 60 price must be considered as Sideways. One can easily interpret the TREND.
Yellow Line = RSI Moving Average
RED and Green Line= RSI
Grey Zone = Sideways
Horizontal line = RSI level 50
Settings can be changed as required.
RSI Line:
RSI Above 50 up trend and Entry when color is green
RSI Below 50 down trend and Entry when color is Red
RSI in Grey Zone is sideways, wait for a breakout
RSI above 50 and color is red then its a pullback in uptrend
RSI below 50 and color is green then its a pullback in downtrend
ALERTS:
Up signal and Down Signal are provided when ever RSI crosses RSIMA
Up Signal: RSI crosses RSI Moving Average upwards
Down Signal: RSI crosses RSI Moving Average Downwards
Hope the Tradingview community likes this.
2B Reversal Pattern (Expo)█ Overview
The 2B reversal pattern , also called the "spring pattern", is a popular chart pattern professional traders use to identify potential trend reversals. It occurs when the price appears to be breaking down or up and then suddenly bounces back up/down, forming a "spring" or "false breakout" pattern. This pattern indicates that the trend is losing momentum and that a reversal is coming.
In a bearish market , the "spring pattern" occurs when the price of an asset breaks below a support level, causing many traders to sell their positions and causing the price to drop even further. However, the selling pressure eases at some point, and the price begins to rebound, "springing" back above the support level. This rebound creates a long opportunity for traders who can enter the market at a lower price.
In a bullish market , the "spring pattern" occurs when the price of an asset breaks above a resistance level, causing many traders to buy into the asset and drive the price up even further. However, the buying pressure eases at some point, and the price begins to decline, "springing" below the resistance level. This decline creates a selling opportunity for traders who can short the market at a higher price.
█ What are the benefits of using the 2B Reversal Pattern?
The benefits of using the 2B Reversal pattern as a trader include identifying potential buying or selling opportunities with reduced risk. By waiting for the price to "spring back" to the initial breakout level, traders can avoid entering the market too soon and minimize the risk of potential losses.
█ How to use
Traders can use the 2B reversal pattern to identify reversals. If the pattern occurs after an uptrend, traders may sell their long positions or enter a short position, anticipating a reversal to a downtrend. If the pattern occurs after a downtrend, traders may sell their short positions or enter a long position, anticipating a reversal to an uptrend.
█ Consolidation Strategy
First, traders should identify a period of price consolidation or a trading range where the price has been trading sideways for some time. The key feature of the "spring pattern" is a sudden, sharp move downward/upwards through the lower/upper boundary of this trading range, often accompanied by high volume.
However, instead of continuing to move lower/higher, the price then quickly recovers and moves back into the trading range, often on low volume. This quick recovery is the "spring" part of the pattern and suggests that the market has rejected the lower/higher price and that buying/selling pressure is building.
Traders may use the "spring pattern" as a signal to buy/sell the asset, suggesting strong demand/supply for the stock at the lower/higher price level. However, as with all trading strategies, it is important to use other indicators and to manage risk to minimize potential losses carefully.
-----------------
Disclaimer
The information contained in my Scripts/Indicators/Ideas/Algos/Systems does not constitute financial advice or a solicitation to buy or sell any securities of any type. I will not accept liability for any loss or damage, including without limitation any loss of profit, which may arise directly or indirectly from the use of or reliance on such information.
All investments involve risk, and the past performance of a security, industry, sector, market, financial product, trading strategy, backtest, or individual's trading does not guarantee future results or returns. Investors are fully responsible for any investment decisions they make. Such decisions should be based solely on an evaluation of their financial circumstances, investment objectives, risk tolerance, and liquidity needs.
My Scripts/Indicators/Ideas/Algos/Systems are only for educational purposes!
Trend Type Indicator by BobRivera990Usage:
The purpose of this indicator is to programmatically determine the type of price trend using technical analysis tools.
You can do a quick check on the asset’s higher and lower time frames. For example, if you are trading on an H1 chart, you can check the m5 chart to ensure that the trend is in the same direction and similarly check the H4 chart to ensure that the higher time frame price is also moving in the same direction.
If multiple time frame charts confirm a similar trend, then it is considered a very strong trend and ideal for Trend trading.
Remarks:
By default, the last status is related to 8 periods before the latest closing price.
Related definitions:
The three basic types of trends are up, down, and sideways.
1. Uptrend
An uptrend describes the price movement of a financial asset when the overall direction is upward. The uptrend is composed of higher swing lows and higher swing highs.
Some market participants ("long" trend traders) only choose to trade during uptrends.
2. Downtrend
A downtrend refers to the price action of a security that moves lower in price as it fluctuates over time.
The downtrend is composed of lower swing lows and lower swing highs.
3. Sideways
A sideways trend is the horizontal price movement that occurs when the forces of supply and demand are nearly equal. This typically occurs during a period of consolidation before the price continues a prior trend or reverses into a new trend.
How it works:
Step 1: Sideways Trend Detection
In this step we want to distinguish the sideways trend from uptrend and downtrend. For this purpose, we use two common technical analysis tools: ATR and ADX
1. Average True Range (ATR)
The average true range (ATR) is a technical analysis indicator that measures market volatility.
We also use a 20-period moving average of the ATR.
When the ATR is below the average of its last 20-periods, it means that the rate of price volatility has decreased and we conclude that the current trend is sideways
2. Average Directional Index (ADX)
The average directional index (ADX) is a technical analysis indicator used by some traders to determine the strength of a trend.
The trend has strength when ADX is above 25.
So when the ADX is less than or equal to 25, there is no strong trend, and we conclude that the current type of trend is sideways.
Step 2: Detect uptrend from downtrend
If it turns out that the current price trend is not sideways, then it is either uptrend or downtrend.
For this purpose, we use plus and minus directional Indicators (+ DI & -DI).
A general interpretation would be that during a strong trend, when +DI is higher than -DI, it is an uptrend. When -DI is higher than +DI, it is a downtrend.
Parameters:
"Use ATR …" ________________________// Use Average True Range (ATR) to detect Sideways Movements
"ATR Length"_______________________ // length of the Average True Range (ATR) used to detect Sideways Movements
"ATR Moving Average Type" ___________// Type of the moving average of the ATR used to detect Sideways Movements
"ATR MA Length" ____________________// length of the moving average of the ATR used to detect Sideways Movements
"Use ADX ..."_______________________ // Use Average Directional Index (ADX) to detect Sideways Movements
"ADX Smoothing”____________________// length of the Average Directional Index (ADX) used to detect Sideways Movements
"DI Length"_________________________// length of the Plus and Minus Directional Indicators (+DI & -DI) used to determine the direction of the trend
"ADX Limit" ________________________// A level of ADX used as the boundary between Trend Market and Sideways Market
"Smoothing Factor"__________________// Factor used for smoothing the oscillator
"Lag"______________________________// lag used to match indicator and chart
Resources:
www.investopedia.com
NYSE Volume UP FLOW VS Down FLOW ULTIMATE VOLDNYSE Volume UP FLOW VS Down FLOW ULTIMATE StokedStocks
BASED OFF THE VOLD INDEX
The VOLD (also $VOLD) is the difference between the up volume and down volume on the NYSE. i.e. NYSE $UVOL minus $DVOL; the net up volume.
If you consider that VOLD is the net value between UVOL (up volume) and DVOL (down volume) then you need to understand these two to understand VOLD.
UVOL or DVOL are a total of the volume on all stocks that are up or down in price. Up or down is based on the previous session's closing price. The size of the stock's price change is irrelevant.
If the stock is up only $.01, then its volume is grouped into the UVOL total. If that stock's price then drops by $.02 it will be down $.01 and the day's volume for that stock will now be grouped with the DVOL total.
Note that when a stock moves from being an up stock to a down stock its volume will be removed from the UVOL total and added to the DVOL total. Say the stocks volume is 1 million shares when it moves from up to down. The DVOL will increase by 1 million and the UVOL will decrease by 1 million which means that VOLD will decrease by 2 million.
NYSE Up/Down Volume Ratio is often used as a barometer for stocks trading on all U.S. Exchanges even though it is calculated based on stocks listed on the New York Stock Exchange.
NYSE Up/Down ratio represents the volume of NYSE stocks that are advancing divided by the volume of declining stocks.
The volume of advancing stocks or upside volume is the sum of the volume or the number of shares traded associated with stocks that closed higher.
The downside volume is the total number of shares traded that are associated with stocks that closed lower.
The interpretation of the NYSE Up/Down ratio is rather simple. A value higher than one indicates that there is more volume associated with up stocks than with down stocks and it is usually interpreted as a bullish signal.
Obviously, a bearish signal occurs when the NYSE Up/Down ratio is lower than one, which tells us that there are more volume associated with down stocks than with up stocks.
Check out my other indicators and website stokedstocks.wordpress.com for tons of free stock training books and pictures and settings